[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58869] trunk/blender/source/blender/ blenkernel/intern/pbvh.c: fix for over-allocation in BKE_pbvh_search_gather , BKE_pbvh_gather_proxies,

Campbell Barton ideasman42 at gmail.com
Sat Aug 3 20:05:30 CEST 2013


Revision: 58869
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58869
Author:   campbellbarton
Date:     2013-08-03 18:05:30 +0000 (Sat, 03 Aug 2013)
Log Message:
-----------
fix for over-allocation in BKE_pbvh_search_gather, BKE_pbvh_gather_proxies,
each element was having the size of PBVHNode allocated rather then the size of a pointer (8 vs 184 bytes here)

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/pbvh.c

Modified: trunk/blender/source/blender/blenkernel/intern/pbvh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/pbvh.c	2013-08-03 17:53:41 UTC (rev 58868)
+++ trunk/blender/source/blender/blenkernel/intern/pbvh.c	2013-08-03 18:05:30 UTC (rev 58869)
@@ -753,7 +753,7 @@
                             PBVHNode ***r_array, int *r_tot)
 {
 	PBVHIter iter;
-	PBVHNode **array = NULL, **newarray, *node;
+	PBVHNode **array = NULL, *node;
 	int tot = 0, space = 0;
 
 	pbvh_iter_begin(&iter, bvh, scb, search_data);
@@ -763,14 +763,7 @@
 			if (tot == space) {
 				/* resize array if needed */
 				space = (tot == 0) ? 32 : space * 2;
-				newarray = MEM_callocN(sizeof(PBVHNode) * space, "PBVHNodeSearch");
-
-				if (array) {
-					memcpy(newarray, array, sizeof(PBVHNode) * tot);
-					MEM_freeN(array);
-				}
-
-				array = newarray;
+				array = MEM_recallocN_id(array, sizeof(PBVHNode *) * space, __func__);
 			}
 
 			array[tot] = node;
@@ -1807,7 +1800,7 @@
 
 void BKE_pbvh_gather_proxies(PBVH *pbvh, PBVHNode ***r_array,  int *r_tot)
 {
-	PBVHNode **array = NULL, **newarray, *node;
+	PBVHNode **array = NULL, *node;
 	int tot = 0, space = 0;
 	int n;
 
@@ -1818,14 +1811,7 @@
 			if (tot == space) {
 				/* resize array if needed */
 				space = (tot == 0) ? 32 : space * 2;
-				newarray = MEM_callocN(sizeof(PBVHNode) * space, "BKE_pbvh_gather_proxies");
-
-				if (array) {
-					memcpy(newarray, array, sizeof(PBVHNode) * tot);
-					MEM_freeN(array);
-				}
-
-				array = newarray;
+				array = MEM_recallocN_id(array, sizeof(PBVHNode *) * space, __func__);
 			}
 
 			array[tot] = node;




More information about the Bf-blender-cvs mailing list