2
0
Эх сурвалжийг харах

AC3D: Throw DeadlyImportError when too many vertices instead of out-of-memory exception

Valgrind can't throw an exception when running out of memory. The program
wil just crash. This fixes it in some cases but not all.
Turo Lamminen 10 жил өмнө
parent
commit
681c32d5ec
1 өөрчлөгдсөн 3 нэмэгдсэн , 0 устгасан
  1. 3 0
      code/ACLoader.cpp

+ 3 - 0
code/ACLoader.cpp

@@ -274,6 +274,9 @@ void AC3DImporter::LoadObjectSection(std::vector<Object>& objects)
 			SkipSpaces(&buffer);
 
 			unsigned int t = strtoul10(buffer,&buffer);
+			if (t >= std::numeric_limits<int32_t>::max() / sizeof(aiVector3D)) {
+				throw DeadlyImportError("AC3D: Too many vertices, would run out of memory");
+			}
 			obj.vertices.reserve(t);
 			for (unsigned int i = 0; i < t;++i)
 			{