Pārlūkot izejas kodu

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 gadi atpakaļ
vecāks
revīzija
681c32d5ec
1 mainītis faili ar 3 papildinājumiem un 0 dzēšanām
  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)
 			{