[Bf-blender-cvs] [b26da8b467] master: Cycles: Cleanup: use vector instead of bare malloc

Sergey Sharybin noreply at git.blender.org
Fri Feb 10 13:47:06 CET 2017


Commit: b26da8b46788826559f700a3272819880b8ccf96
Author: Sergey Sharybin
Date:   Fri Feb 10 10:05:41 2017 +0100
Branches: master
https://developer.blender.org/rBb26da8b46788826559f700a3272819880b8ccf96

Cycles: Cleanup: use vector instead of bare malloc

This way memory is more "manageable" and easier to follow.

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

M	intern/cycles/blender/blender_mesh.cpp

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

diff --git a/intern/cycles/blender/blender_mesh.cpp b/intern/cycles/blender/blender_mesh.cpp
index 85117cfff7..e86d92046b 100644
--- a/intern/cycles/blender/blender_mesh.cpp
+++ b/intern/cycles/blender/blender_mesh.cpp
@@ -535,14 +535,11 @@ static void attr_create_pointiness(Scene *scene,
 		AttributeSet& attributes = (subdivision)? mesh->subd_attributes: mesh->attributes;
 		Attribute *attr = attributes.add(ATTR_STD_POINTINESS);
 		float *data = attr->data_float();
-		int *counter = new int[numverts];
-		float *raw_data = new float[numverts];
-		float3 *edge_accum = new float3[numverts];
+		vector<int> counter(numverts, 0);
+		vector<float> raw_data(numverts, 0.0f);
+		vector<float3> edge_accum(numverts, make_float3(0.0f, 0.0f, 0.0f));
 
 		/* Calculate pointiness using single ring neighborhood. */
-		memset(counter, 0, sizeof(int) * numverts);
-		memset(raw_data, 0, sizeof(float) * numverts);
-		memset(edge_accum, 0, sizeof(float3) * numverts);
 		BL::Mesh::edges_iterator e;
 		int i = 0;
 		for(b_mesh.edges.begin(e); e != b_mesh.edges.end(); ++e, ++i) {
@@ -570,8 +567,8 @@ static void attr_create_pointiness(Scene *scene,
 		}
 
 		/* Blur vertices to approximate 2 ring neighborhood. */
-		memset(counter, 0, sizeof(int) * numverts);
-		memcpy(data, raw_data, sizeof(float) * numverts);
+		memset(&counter[0], 0, sizeof(int) * counter.size());
+		memcpy(data, &raw_data[0], sizeof(float) * raw_data.size());
 		i = 0;
 		for(b_mesh.edges.begin(e); e != b_mesh.edges.end(); ++e, ++i) {
 			int v0 = b_mesh.edges[i].vertices()[0],
@@ -584,10 +581,6 @@ static void attr_create_pointiness(Scene *scene,
 		for(i = 0; i < numverts; ++i) {
 			data[i] /= counter[i] + 1;
 		}
-
-		delete [] counter;
-		delete [] raw_data;
-		delete [] edge_accum;
 	}
 }




More information about the Bf-blender-cvs mailing list