diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2011-08-21 14:32:15 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2011-08-21 14:32:15 +0400 |
commit | f7b9c85871ad4e68dbd578556f3ae8ef55d6dc98 (patch) | |
tree | ce40e3888cd02d57855598776e6cbd69924161dc /intern | |
parent | c7fce6be2ea6dcc1ecdf52a8f5d1608d45117e8f (diff) |
Cycles: fix some invalid memory access problems found by running the windows build in debug mode.
Diffstat (limited to 'intern')
-rw-r--r-- | intern/cycles/blender/blender_mesh.cpp | 20 | ||||
-rw-r--r-- | intern/cycles/blender/blender_object.cpp | 6 | ||||
-rw-r--r-- | intern/cycles/blender/blender_session.cpp | 4 | ||||
-rw-r--r-- | intern/cycles/blender/blender_shader.cpp | 18 | ||||
-rw-r--r-- | intern/cycles/blender/blender_sync.cpp | 10 | ||||
-rw-r--r-- | intern/cycles/render/graph.cpp | 2 | ||||
-rw-r--r-- | intern/cycles/render/graph.h | 3 |
7 files changed, 33 insertions, 30 deletions
diff --git a/intern/cycles/blender/blender_mesh.cpp b/intern/cycles/blender/blender_mesh.cpp index c69e911723e..3fe4fa60a16 100644 --- a/intern/cycles/blender/blender_mesh.cpp +++ b/intern/cycles/blender/blender_mesh.cpp @@ -62,14 +62,14 @@ static void create_mesh(Scene *scene, Mesh *mesh, BL::Mesh b_mesh, const vector< /* 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 @@ static void create_mesh(Scene *scene, Mesh *mesh, BL::Mesh b_mesh, const vector< 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 @@ static void create_mesh(Scene *scene, Mesh *mesh, BL::Mesh b_mesh, const vector< { 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 @@ static void create_mesh(Scene *scene, Mesh *mesh, BL::Mesh b_mesh, const vector< 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 @@ static void create_mesh(Scene *scene, Mesh *mesh, BL::Mesh b_mesh, const vector< { 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 @@ static void create_mesh(Scene *scene, Mesh *mesh, BL::Mesh b_mesh, const vector< 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 @@ static void create_subd_mesh(Mesh *mesh, BL::Mesh b_mesh, PointerRNA *cmesh, con /* 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 @@ Mesh *BlenderSync::sync_mesh(BL::Object b_ob, bool object_updated) 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) diff --git a/intern/cycles/blender/blender_object.cpp b/intern/cycles/blender/blender_object.cpp index 241cbf07357..52081cc0b60 100644 --- a/intern/cycles/blender/blender_object.cpp +++ b/intern/cycles/blender/blender_object.cpp @@ -40,7 +40,7 @@ bool BlenderSync::object_is_modified(BL::Object b_ob) 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 @@ void BlenderSync::sync_objects(BL::SpaceView3D b_v3d) /* 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 @@ void BlenderSync::sync_objects(BL::SpaceView3D b_v3d) 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++; diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp index d79c671fd3b..f69ebff5338 100644 --- a/intern/cycles/blender/blender_session.cpp +++ b/intern/cycles/blender/blender_session.cpp @@ -148,7 +148,9 @@ void BlenderSession::write_render_result() 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); } diff --git a/intern/cycles/blender/blender_shader.cpp b/intern/cycles/blender/blender_shader.cpp index 113cf2a91bc..db65a7f129e 100644 --- a/intern/cycles/blender/blender_shader.cpp +++ b/intern/cycles/blender/blender_shader.cpp @@ -54,18 +54,18 @@ static BL::NodeSocket get_node_input(BL::Node *b_group_node, BL::Node b_node, co { 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 @@ static BL::NodeSocket get_node_output(BL::Node b_node, const string& name) { 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 @@ static void add_nodes(BL::BlendData b_data, ShaderGraph *graph, BL::ShaderNodeTr 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 @@ static void add_nodes(BL::BlendData b_data, ShaderGraph *graph, BL::ShaderNodeTr 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 @@ static void add_nodes(BL::BlendData b_data, ShaderGraph *graph, BL::ShaderNodeTr /* 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 @@ void BlenderSync::sync_materials() /* 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 @@ void BlenderSync::sync_lamps() /* 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 */ diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp index 1897ff13a64..c00fd8e7689 100644 --- a/intern/cycles/blender/blender_sync.cpp +++ b/intern/cycles/blender/blender_sync.cpp @@ -65,19 +65,19 @@ bool BlenderSync::sync_recalc() 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) if(b_mat->recalc()) shader_map.set_recalc(*b_mat); 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) if(b_lamp->recalc()) shader_map.set_recalc(*b_lamp); BL::BlendData::objects_iterator b_ob; - for(b_ob = b_data.objects.begin(); b_ob != b_data.objects.end(); ++b_ob) { + for(b_data.objects.begin(b_ob); b_ob != b_data.objects.end(); ++b_ob) { if(b_ob->recalc()) { object_map.set_recalc(*b_ob); light_map.set_recalc(*b_ob); @@ -92,13 +92,13 @@ bool BlenderSync::sync_recalc() BL::BlendData::meshes_iterator b_mesh; - for(b_mesh = b_data.meshes.begin(); b_mesh != b_data.meshes.end(); ++b_mesh) + for(b_data.meshes.begin(b_mesh); b_mesh != b_data.meshes.end(); ++b_mesh) if(b_mesh->recalc()) mesh_map.set_recalc(*b_mesh); BL::BlendData::worlds_iterator b_world; - for(b_world = b_data.worlds.begin(); b_world != b_data.worlds.end(); ++b_world) + for(b_data.worlds.begin(b_world); b_world != b_data.worlds.end(); ++b_world) if(world_map == b_world->ptr.data && b_world->recalc()) world_recalc = true; diff --git a/intern/cycles/render/graph.cpp b/intern/cycles/render/graph.cpp index 3dd3d6107b4..54acc6e14cd 100644 --- a/intern/cycles/render/graph.cpp +++ b/intern/cycles/render/graph.cpp @@ -324,7 +324,7 @@ void ShaderGraph::clean() break_cycles(output(), visited, on_stack); /* remove unused nodes */ - vector<ShaderNode*> newnodes; + list<ShaderNode*> newnodes; foreach(ShaderNode *node, nodes) { if(visited[node->id]) diff --git a/intern/cycles/render/graph.h b/intern/cycles/render/graph.h index c73dd77d5df..a79a68da358 100644 --- a/intern/cycles/render/graph.h +++ b/intern/cycles/render/graph.h @@ -21,6 +21,7 @@ #include "kernel_types.h" +#include "util_list.h" #include "util_map.h" #include "util_param.h" #include "util_set.h" @@ -193,7 +194,7 @@ public: class ShaderGraph { public: - vector<ShaderNode*> nodes; + list<ShaderNode*> nodes; bool finalized; ShaderGraph(); |