Преглед изворни кода

Merge pull request #3068 from ms-maxvollmer/GLTF2_invalid_buffer_fix

GLTF2: ExtractData now throws exception instead of returning false if data is invalid
Kim Kulling пре 5 година
родитељ
комит
1e74fe85bf
2 измењених фајлова са 9 додато и 8 уклоњено
  1. 2 2
      code/glTF2/glTF2Asset.h
  2. 7 6
      code/glTF2/glTF2Asset.inl

+ 2 - 2
code/glTF2/glTF2Asset.h

@@ -375,8 +375,8 @@ struct Accessor : public Object {
 
 
     inline uint8_t *GetPointer();
     inline uint8_t *GetPointer();
 
 
-    template <class T>
-    bool ExtractData(T *&outData);
+    template<class T>
+    void ExtractData(T *&outData);
 
 
     void WriteData(size_t count, const void *src_buffer, size_t src_stride);
     void WriteData(size_t count, const void *src_buffer, size_t src_stride);
 
 

+ 7 - 6
code/glTF2/glTF2Asset.inl

@@ -613,10 +613,13 @@ inline void CopyData(size_t count,
 }
 }
 } // namespace
 } // namespace
 
 
-template <class T>
-bool Accessor::ExtractData(T *&outData) {
-    uint8_t *data = GetPointer();
-    if (!data) return false;
+template<class T>
+void Accessor::ExtractData(T *&outData)
+{
+    uint8_t* data = GetPointer();
+    if (!data) {
+        throw DeadlyImportError("GLTF: data is NULL");
+    }
 
 
     const size_t elemSize = GetElementSize();
     const size_t elemSize = GetElementSize();
     const size_t totalSize = elemSize * count;
     const size_t totalSize = elemSize * count;
@@ -636,8 +639,6 @@ bool Accessor::ExtractData(T *&outData) {
             memcpy(outData + i, data + i * stride, elemSize);
             memcpy(outData + i, data + i * stride, elemSize);
         }
         }
     }
     }
-
-    return true;
 }
 }
 
 
 inline void Accessor::WriteData(size_t _count, const void *src_buffer, size_t src_stride) {
 inline void Accessor::WriteData(size_t _count, const void *src_buffer, size_t src_stride) {