[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [39580] branches/cycles: Cycles: fix some invalid memory access problems found by running the windows build in debug mode .

Brecht Van Lommel brechtvanlommel at pandora.be
Sun Aug 21 12:32:16 CEST 2011


Revision: 39580
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=39580
Author:   blendix
Date:     2011-08-21 10:32:15 +0000 (Sun, 21 Aug 2011)
Log Message:
-----------
Cycles: fix some invalid memory access problems found by running the windows build in debug mode.

Modified Paths:
--------------
    branches/cycles/CMakeLists.txt
    branches/cycles/intern/cycles/blender/blender_mesh.cpp
    branches/cycles/intern/cycles/blender/blender_object.cpp
    branches/cycles/intern/cycles/blender/blender_session.cpp
    branches/cycles/intern/cycles/blender/blender_shader.cpp
    branches/cycles/intern/cycles/blender/blender_sync.cpp
    branches/cycles/intern/cycles/render/graph.cpp
    branches/cycles/intern/cycles/render/graph.h
    branches/cycles/source/blender/makesrna/intern/makesrna.c

Modified: branches/cycles/CMakeLists.txt
===================================================================
--- branches/cycles/CMakeLists.txt	2011-08-21 10:14:21 UTC (rev 39579)
+++ branches/cycles/CMakeLists.txt	2011-08-21 10:32:15 UTC (rev 39580)
@@ -497,12 +497,6 @@
 			set(BOOST "/usr" CACHE PATH "Boost Directory")
 		endif()
 
-	    #set(Boost_ADDITIONAL_VERSIONS "1.46" "1.45" "1.44" 
-		#	"1.43" "1.43.0" "1.42" "1.42.0" 
-		#	"1.41" "1.41.0" "1.40" "1.40.0"
-		#	"1.39" "1.39.0" "1.38" "1.38.0"
-		#	"1.37" "1.37.0" "1.34.1" "1_34_1")
-
 		set(BOOST_ROOT ${BOOST})
 		set(Boost_USE_MULTITHREADED ON)
 		find_package(Boost 1.34 REQUIRED COMPONENTS filesystem regex system thread)
@@ -819,8 +813,12 @@
 			set(BOOST ${LIBDIR}/boost)
 			set(BOOST_INCLUDE_DIR ${BOOST}/include)
 			set(BOOST_POSTFIX "vc90-mt-s-1_46_1.lib")
-			set(BOOST_LIBRARIES libboost_date_time-${BOOST_POSTFIX} libboost_filesystem-${BOOST_POSTFIX}
-			libboost_regex-${BOOST_POSTFIX} libboost_system-${BOOST_POSTFIX} libboost_thread-${BOOST_POSTFIX})
+			set(BOOST_DEBUG_POSTFIX "vc90-mt-sgd-1_46_1.lib")
+			set(BOOST_LIBRARIES
+				optimized libboost_date_time-${BOOST_POSTFIX} libboost_filesystem-${BOOST_POSTFIX}
+				libboost_regex-${BOOST_POSTFIX} libboost_system-${BOOST_POSTFIX} libboost_thread-${BOOST_POSTFIX}
+				debug libboost_date_time-${BOOST_DEBUG_POSTFIX} libboost_filesystem-${BOOST_DEBUG_POSTFIX}
+				libboost_regex-${BOOST_DEBUG_POSTFIX} libboost_system-${BOOST_DEBUG_POSTFIX} libboost_thread-${BOOST_DEBUG_POSTFIX})
 			set(BOOST_LIBPATH ${BOOST}/lib)
 			set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
 		endif()

Modified: branches/cycles/intern/cycles/blender/blender_mesh.cpp
===================================================================
--- branches/cycles/intern/cycles/blender/blender_mesh.cpp	2011-08-21 10:14:21 UTC (rev 39579)
+++ branches/cycles/intern/cycles/blender/blender_mesh.cpp	2011-08-21 10:32:15 UTC (rev 39580)
@@ -62,14 +62,14 @@
 	/* create vertices */
 	BL::Mesh::vertices_iterator v;
 
-	for(v = b_mesh.vertices.begin(); v != b_mesh.vertices.end(); ++v)
+	for(b_mesh.vertices.begin(v); v != b_mesh.vertices.end(); ++v)
 		mesh->verts.push_back(get_float3(v->co()));
 
 	/* create faces */
 	BL::Mesh::faces_iterator f;
 	vector<int> nverts;
 
-	for(f = b_mesh.faces.begin(); f != b_mesh.faces.end(); ++f) {
+	for(b_mesh.faces.begin(f); f != b_mesh.faces.end(); ++f) {
 		int4 vi = get_int4(f->vertices_raw());
 		int n= (vi[3] == 0)? 3: 4;
 		int shader = used_shaders[f->material_index()];
@@ -101,7 +101,7 @@
 		BL::Mesh::vertices_iterator v;
 		size_t i = 0;
 
-		for(v = b_mesh.vertices.begin(); v != b_mesh.vertices.end(); ++v)
+		for(b_mesh.vertices.begin(v); v != b_mesh.vertices.end(); ++v)
 			fdata[i++] = get_float3(v->co())*size - loc;
 	}
 
@@ -109,7 +109,7 @@
 	{
 		BL::Mesh::vertex_colors_iterator l;
 
-		for(l = b_mesh.vertex_colors.begin(); l != b_mesh.vertex_colors.end(); ++l) {
+		for(b_mesh.vertex_colors.begin(l); l != b_mesh.vertex_colors.end(); ++l) {
 			if(!mesh_need_attribute(scene, mesh, ustring(l->name())))
 				continue;
 
@@ -120,7 +120,7 @@
 			float3 *fdata = attr->data_float3();
 			size_t i = 0;
 
-			for(c = l->data.begin(); c != l->data.end(); ++c, ++i) {
+			for(l->data.begin(c); c != l->data.end(); ++c, ++i) {
 				fdata[0] =  get_float3(c->color1());
 				fdata[1] =  get_float3(c->color2());
 				fdata[2] =  get_float3(c->color3());
@@ -140,7 +140,7 @@
 	{
 		BL::Mesh::uv_textures_iterator l;
 
-		for(l = b_mesh.uv_textures.begin(); l != b_mesh.uv_textures.end(); ++l) {
+		for(b_mesh.uv_textures.begin(l); l != b_mesh.uv_textures.end(); ++l) {
 			Attribute::Standard std = (l->active_render())? Attribute::STD_UV: Attribute::STD_NONE;
 			ustring name = ustring(l->name());
 
@@ -158,7 +158,7 @@
 			float3 *fdata = attr->data_float3();
 			size_t i = 0;
 
-			for(t = l->data.begin(); t != l->data.end(); ++t, ++i) {
+			for(l->data.begin(t); t != l->data.end(); ++t, ++i) {
 				fdata[0] =  get_float3(t->uv1());
 				fdata[1] =  get_float3(t->uv2());
 				fdata[2] =  get_float3(t->uv3());
@@ -183,13 +183,13 @@
 	/* create vertices */
 	BL::Mesh::vertices_iterator v;
 
-	for(v = b_mesh.vertices.begin(); v != b_mesh.vertices.end(); ++v)
+	for(b_mesh.vertices.begin(v); v != b_mesh.vertices.end(); ++v)
 		sdmesh.add_vert(get_float3(v->co()));
 
 	/* create faces */
 	BL::Mesh::faces_iterator f;
 
-	for(f = b_mesh.faces.begin(); f != b_mesh.faces.end(); ++f) {
+	for(b_mesh.faces.begin(f); f != b_mesh.faces.end(); ++f) {
 		int4 vi = get_int4(f->vertices_raw());
 		int n= (vi[3] == 0)? 3: 4;
 		//int shader = used_shaders[f->material_index()];
@@ -223,7 +223,7 @@
 	vector<uint> used_shaders;
 
 	BL::Object::material_slots_iterator slot;
-	for(slot = b_ob.material_slots.begin(); slot != b_ob.material_slots.end(); ++slot)
+	for(b_ob.material_slots.begin(slot); slot != b_ob.material_slots.end(); ++slot)
 		find_shader(slot->material(), used_shaders);
 
 	if(used_shaders.size() == 0)

Modified: branches/cycles/intern/cycles/blender/blender_object.cpp
===================================================================
--- branches/cycles/intern/cycles/blender/blender_object.cpp	2011-08-21 10:14:21 UTC (rev 39579)
+++ branches/cycles/intern/cycles/blender/blender_object.cpp	2011-08-21 10:32:15 UTC (rev 39580)
@@ -40,7 +40,7 @@
 	else {
 		/* object level material links */
 		BL::Object::material_slots_iterator slot;
-		for(slot = b_ob.material_slots.begin(); slot != b_ob.material_slots.end(); ++slot)
+		for(b_ob.material_slots.begin(slot); slot != b_ob.material_slots.end(); ++slot)
 			if(slot->link() == BL::MaterialSlot::link_OBJECT)
 				return true;
 	}
@@ -144,7 +144,7 @@
 	/* object loop */
 	BL::Scene::objects_iterator b_ob;
 
-	for(b_ob = b_scene.objects.begin(); b_ob != b_scene.objects.end(); ++b_ob) {
+	for(b_scene.objects.begin(b_ob); b_ob != b_scene.objects.end(); ++b_ob) {
 		bool hide = (b_v3d)? b_ob->hide(): b_ob->hide_render();
 
 		if(!hide && get_layer(b_ob->layers()) & layer) {
@@ -155,7 +155,7 @@
 				BL::Object::dupli_list_iterator b_dup;
 				int b_index = 0;
 
-				for(b_dup = b_ob->dupli_list.begin(); b_dup != b_ob->dupli_list.end(); ++b_dup) {
+				for(b_ob->dupli_list.begin(b_dup); b_dup != b_ob->dupli_list.end(); ++b_dup) {
 					Transform tfm = get_transform(b_dup->matrix());
 					sync_object(*b_ob, b_index, b_dup->object(), tfm);
 					b_index++;

Modified: branches/cycles/intern/cycles/blender/blender_session.cpp
===================================================================
--- branches/cycles/intern/cycles/blender/blender_session.cpp	2011-08-21 10:14:21 UTC (rev 39579)
+++ branches/cycles/intern/cycles/blender/blender_session.cpp	2011-08-21 10:32:15 UTC (rev 39580)
@@ -148,7 +148,9 @@
 	RNA_pointer_create(NULL, &RNA_RenderResult, rrp, &rrptr);
 	BL::RenderResult rr(rrptr);
 
-	rna_RenderLayer_rect_set(&rr.layers.begin()->ptr, (float*)&buffer[0]);
+	BL::RenderResult::layers_iterator layer;
+	rr.layers.begin(layer);
+	rna_RenderLayer_rect_set(&layer->ptr, (float*)&buffer[0]);
 
 	RE_engine_end_result((RenderEngine*)b_engine.ptr.data, rrp);
 }

Modified: branches/cycles/intern/cycles/blender/blender_shader.cpp
===================================================================
--- branches/cycles/intern/cycles/blender/blender_shader.cpp	2011-08-21 10:14:21 UTC (rev 39579)
+++ branches/cycles/intern/cycles/blender/blender_shader.cpp	2011-08-21 10:32:15 UTC (rev 39580)
@@ -54,18 +54,18 @@
 {
 	BL::Node::inputs_iterator b_in;
 
-	for(b_in = b_node.inputs.begin(); b_in != b_node.inputs.end(); ++b_in) {
+	for(b_node.inputs.begin(b_in); b_in != b_node.inputs.end(); ++b_in) {
 		if(b_in->name() == name) {
 			if(b_group_node) {
 
 				BL::NodeTree b_ntree = BL::NodeGroup(*b_group_node).node_tree();
 				BL::NodeTree::links_iterator b_link;
 
-				for(b_link = b_ntree.links.begin(); b_link != b_ntree.links.end(); ++b_link) {
+				for(b_ntree.links.begin(b_link); b_link != b_ntree.links.end(); ++b_link) {
 					if(b_link->to_socket().ptr.data == b_in->ptr.data) {
 						BL::Node::inputs_iterator b_gin;
 
-						for(b_gin = b_group_node->inputs.begin(); b_gin != b_group_node->inputs.end(); ++b_gin)
+						for(b_group_node->inputs.begin(b_gin); b_gin != b_group_node->inputs.end(); ++b_gin)
 							if(b_gin->group_socket().ptr.data == b_link->from_socket().ptr.data)
 								return *b_gin;
 
@@ -86,7 +86,7 @@
 {
 	BL::Node::outputs_iterator b_out;
 
-	for(b_out = b_node.outputs.begin(); b_out != b_node.outputs.end(); ++b_out)
+	for(b_node.outputs.begin(b_out); b_out != b_node.outputs.end(); ++b_out)
 		if(b_out->name() == name)
 			return *b_out;
 
@@ -405,7 +405,7 @@
 	PtrNodeMap node_map;
 	map<void*, PtrSockMap> node_groups;
 
-	for(b_node = b_ntree.nodes.begin(); b_node != b_ntree.nodes.end(); ++b_node) {
+	for(b_ntree.nodes.begin(b_node); b_node != b_ntree.nodes.end(); ++b_node) {
 		if(b_node->is_a(&RNA_NodeGroup)) {
 			BL::NodeGroup b_gnode(*b_node);
 			BL::ShaderNodeTree b_group_ntree(b_gnode.node_tree());
@@ -422,7 +422,7 @@
 
 				node_map[b_node->ptr.data] = node;
 
-				for(b_input = b_node->inputs.begin(); b_input != b_node->inputs.end(); ++b_input) {
+				for(b_node->inputs.begin(b_input); b_input != b_node->inputs.end(); ++b_input) {
 					ShaderInput *input = node->input(b_input->name().c_str());
 					BL::NodeSocket sock(get_node_input(b_group_node, *b_node, b_input->name()));
 
@@ -458,7 +458,7 @@
 	/* connect nodes */
 	BL::NodeTree::links_iterator b_link;
 
-	for(b_link = b_ntree.links.begin(); b_link != b_ntree.links.end(); ++b_link) {
+	for(b_ntree.links.begin(b_link); b_link != b_ntree.links.end(); ++b_link) {
 		/* get blender link data */
 		BL::Node b_from_node = b_link->from_node();
 		BL::Node b_to_node = b_link->to_node();
@@ -528,7 +528,7 @@
 	/* material loop */
 	BL::BlendData::materials_iterator b_mat;
 
-	for(b_mat = b_data.materials.begin(); b_mat != b_data.materials.end(); ++b_mat) {
+	for(b_data.materials.begin(b_mat); b_mat != b_data.materials.end(); ++b_mat) {
 		Shader *shader;
 		
 		/* test if we need to sync */
@@ -610,7 +610,7 @@
 	/* lamp loop */
 	BL::BlendData::lamps_iterator b_lamp;
 
-	for(b_lamp = b_data.lamps.begin(); b_lamp != b_data.lamps.end(); ++b_lamp) {
+	for(b_data.lamps.begin(b_lamp); b_lamp != b_data.lamps.end(); ++b_lamp) {
 		Shader *shader;
 		
 		/* test if we need to sync */

Modified: branches/cycles/intern/cycles/blender/blender_sync.cpp

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list