From 26e77fc92fbcae430af41a5321b5e07d0d59d2cf Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Tue, 22 Nov 2005 09:57:32 +0000 Subject: [PATCH] From Jason Daly, (with small tweak by Robert Osfield) fix for Prorgram::removeShader(Shader*) so that it properly remove the shader and its entry in the _shaderList. --- src/osg/Program.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/osg/Program.cpp b/src/osg/Program.cpp index f4f3298c2..08f9af318 100644 --- a/src/osg/Program.cpp +++ b/src/osg/Program.cpp @@ -2027,12 +2027,14 @@ bool Program::removeShader( Shader* shader ) if( !shader ) return false; // Shader must exist to be removed. - for( unsigned int i=0; i < _shaderList.size(); ++i ) + for( ShaderList::iterator itr = _shaderList.begin(); + itr != _shaderList.end(); + ++itr) { - if( shader == _shaderList[i].get() ) + if( shader == itr->get() ) { shader->removeProgramRef( this ); - _shaderList[i] = 0; + _shaderList.erase(itr); dirtyProgram(); return true; }