Procházet zdrojové kódy

Strict check for accessor "count"

Malcolm Tyrrell před 4 roky
rodič
revize
3503252e12
1 změnil soubory, kde provedl 8 přidání a 1 odebrání
  1. 8 1
      code/AssetLib/glTF2/glTF2Asset.inl

+ 8 - 1
code/AssetLib/glTF2/glTF2Asset.inl

@@ -883,7 +883,14 @@ inline void Accessor::Read(Value &obj, Asset &r) {
 
     byteOffset = MemberOrDefault(obj, "byteOffset", size_t(0));
     componentType = MemberOrDefault(obj, "componentType", ComponentType_BYTE);
-    count = MemberOrDefault(obj, "count", size_t(0));
+    {
+        const Value* countValue = FindUInt(obj, "count");
+        if (!countValue || countValue->GetInt() < 1)
+        {
+            throw DeadlyImportError("A strictly positive count value is required, when reading ", id.c_str(), name.empty() ? "" : " (" + name + ")");
+        }
+        count = countValue->GetUint();
+    }
 
     const char *typestr;
     type = ReadMember(obj, "type", typestr) ? AttribType::FromString(typestr) : AttribType::SCALAR;