]> git.tdb.fi Git - libs/gl.git/blobdiff - source/render/programdata.cpp
Fix mismatched new[]/delete
[libs/gl.git] / source / render / programdata.cpp
index b63ad60e3e5138e908ac9781d129ce27f016c144..401ed18949af2ff09ec7b826b5c36627854e4201 100644 (file)
@@ -79,7 +79,7 @@ ProgramData::~ProgramData()
        for(BlockMap::iterator i=blocks.begin(); i!=blocks.end(); ++i)
        {
                if(i->second.indices.type_flag==0xFE)
-                       delete i->second.indices.dynamic.values;
+                       delete[] i->second.indices.dynamic.values;
                delete i->second.block;
        }
        delete buffer;
@@ -611,7 +611,7 @@ void ProgramData::apply() const
                        dirty = 0;
                }
 
-               const Program::UniformBlockMap &prog_blocks = prog->get_uniform_blocks();
+               const vector<Program::UniformBlockInfo> &prog_blocks = prog->get_uniform_blocks();
 
                UniformBlock *old_last_block = last_block;
                if(pu.dirty==ALL_ONES)
@@ -622,29 +622,29 @@ void ProgramData::apply() const
                        pu.blocks.reserve(prog_blocks.size());
 
                        pu.used = 0;
-                       for(Program::UniformBlockMap::const_iterator i=prog_blocks.begin(); i!=prog_blocks.end(); ++i)
+                       for(vector<Program::UniformBlockInfo>::const_iterator i=prog_blocks.begin(); i!=prog_blocks.end(); ++i)
                        {
-                               SharedBlock *shared = get_shared_block(i->second);
+                               SharedBlock *shared = get_shared_block(*i);
                                if(shared)
                                {
                                        if(shared->dirty==ALL_ONES)
-                                               update_block_uniform_indices(*shared, i->second);
+                                               update_block_uniform_indices(*shared, *i);
                                        pu.used |= shared->used;
                                }
 
-                               pu.blocks.push_back(ProgramBlock(i->second.bind_point, shared));
+                               pu.blocks.push_back(ProgramBlock(i->bind_point, shared));
                        }
                }
 
                // Update the contents of all dirty blocks.
                bool buffered_blocks_updated = false;
                std::vector<ProgramBlock>::iterator j = pu.blocks.begin();
-               for(Program::UniformBlockMap::const_iterator i=prog_blocks.begin(); i!=prog_blocks.end(); ++i, ++j)
+               for(vector<Program::UniformBlockInfo>::const_iterator i=prog_blocks.begin(); i!=prog_blocks.end(); ++i, ++j)
                {
                        if(!j->shared || !j->shared->dirty)
                                continue;
 
-                       update_block(*j->shared, i->second);
+                       update_block(*j->shared, *i);
                        j->shared->dirty = 0;
                        buffered_blocks_updated |= (j->bind_point>=0);
                }