Parcourir la source

Merge pull request #2717 from migenius/migenius-fix-doublefree

Fix multiple deallocation of memory for texture data.
Kim Kulling il y a 5 ans
Parent
commit
2ed0d905ab
1 fichiers modifiés avec 3 ajouts et 1 suppressions
  1. 3 1
      code/glTF2/glTF2Exporter.cpp

+ 3 - 1
code/glTF2/glTF2Exporter.cpp

@@ -320,7 +320,9 @@ void glTF2Exporter::GetMatTex(const aiMaterial* mat, Ref<Texture>& texture, aiTe
                     if (path[0] == '*') { // embedded
                         aiTexture* tex = mScene->mTextures[atoi(&path[1])];
 
-                        uint8_t* data = reinterpret_cast<uint8_t*>(tex->pcData);
+                        // copy data since lifetime control is handed over to the asset
+                        uint8_t* data = new uint8_t[tex->mWidth];
+                        memcpy(data, tex->pcData, tex->mWidth);
                         texture->source->SetData(data, tex->mWidth, *mAsset);
 
                         if (tex->achFormatHint[0]) {