Browse Source

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 năm trước cách đây
mục cha
commit
681c32d5ec
1 tập tin đã thay đổi với 3 bổ sung0 xóa
  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)
 			{