]> git.seodisparate.com - RockPaperScissorsDuel/commitdiff
Fix memory leak related to loading avatars
authorStephen Seo <seo.disparate@gmail.com>
Wed, 15 Mar 2023 07:11:31 +0000 (16:11 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Wed, 15 Mar 2023 07:11:31 +0000 (16:11 +0900)
src/3d_renderer.cc

index 5a70b19185b7103348332e28a1cf64a0d15b03d2..74a67b82d6f981747fccd3aa63d6adee30aaa11f 100644 (file)
@@ -246,7 +246,11 @@ void Renderer3D::avatar1_loaded(unsigned long long size, const char *data) {
   }
 
   auto avatar = LoadImageFromMemory(".png", (const unsigned char *)data, size);
+  if (!avatar.data) {
+    return;
+  }
   avatar1_texture = LoadTextureFromImage(avatar);
+  UnloadImage(avatar);
 
   avatar1_material = LoadMaterialDefault();
   SetMaterialTexture(&avatar1_material.value(), MATERIAL_MAP_DIFFUSE,
@@ -262,7 +266,11 @@ void Renderer3D::avatar2_loaded(unsigned long long size, const char *data) {
   }
 
   auto avatar = LoadImageFromMemory(".png", (const unsigned char *)data, size);
+  if (!avatar.data) {
+    return;
+  }
   avatar2_texture = LoadTextureFromImage(avatar);
+  UnloadImage(avatar);
 
   avatar2_material = LoadMaterialDefault();
   SetMaterialTexture(&avatar2_material.value(), MATERIAL_MAP_DIFFUSE,