[Bf-blender-cvs] [fbbd7f0d5cc] master: Fix: Crash when reininitializing empty generic array

Hans Goudey noreply at git.blender.org
Wed Oct 5 05:18:30 CEST 2022


Commit: fbbd7f0d5cc93da83440ad81df81d1eb296a47e1
Author: Hans Goudey
Date:   Tue Oct 4 22:11:02 2022 -0500
Branches: master
https://developer.blender.org/rBfbbd7f0d5cc93da83440ad81df81d1eb296a47e1

Fix: Crash when reininitializing empty generic array

Noticed this while developing new code that used GArray.

===================================================================

M	source/blender/blenlib/BLI_generic_array.hh
M	source/blender/blenlib/tests/BLI_generic_array_test.cc

===================================================================

diff --git a/source/blender/blenlib/BLI_generic_array.hh b/source/blender/blenlib/BLI_generic_array.hh
index f0eddd30419..03dc8814309 100644
--- a/source/blender/blenlib/BLI_generic_array.hh
+++ b/source/blender/blenlib/BLI_generic_array.hh
@@ -231,7 +231,9 @@ class GArray {
         this->deallocate(new_data);
         throw;
       }
-      this->deallocate(data_);
+      if (this->data_) {
+        this->deallocate(data_);
+      }
       data_ = new_data;
     }
 
diff --git a/source/blender/blenlib/tests/BLI_generic_array_test.cc b/source/blender/blenlib/tests/BLI_generic_array_test.cc
index 25e08f59f94..8e32430eede 100644
--- a/source/blender/blenlib/tests/BLI_generic_array_test.cc
+++ b/source/blender/blenlib/tests/BLI_generic_array_test.cc
@@ -114,4 +114,13 @@ TEST(generic_array, InContainer)
   }
 }
 
+TEST(generic_array, ReinitEmpty)
+{
+  GArray<> array(CPPType::get<int>());
+  array.reinitialize(10);
+  array.as_mutable_span().typed<int>()[9] = 7;
+  EXPECT_EQ(array.size(), 10);
+  EXPECT_EQ(array.as_span().typed<int>()[9], 7);
+}
+
 }  // namespace blender::tests



More information about the Bf-blender-cvs mailing list