Index: Core/Code/Controllers/mitkRenderingManager.cpp =================================================================== --- Core/Code/Controllers/mitkRenderingManager.cpp (revision 21081) +++ Core/Code/Controllers/mitkRenderingManager.cpp (working copy) @@ -187,16 +187,22 @@ { RenderWindowCallbacksList::iterator callbacks_it = this->m_RenderWindowCallbacksList.find(renderWindow); - renderWindow->RemoveObserver(callbacks_it->second.commands[0u]); - renderWindow->RemoveObserver(callbacks_it->second.commands[1u]); - renderWindow->RemoveObserver(callbacks_it->second.commands[2u]); - this->m_RenderWindowCallbacksList.erase(callbacks_it); + if ( callbacks_it != m_RenderWindowCallbacksList.end() ) + { + renderWindow->RemoveObserver(callbacks_it->second.commands[0u]); + renderWindow->RemoveObserver(callbacks_it->second.commands[1u]); + renderWindow->RemoveObserver(callbacks_it->second.commands[2u]); + this->m_RenderWindowCallbacksList.erase(callbacks_it); + } RenderWindowVector::iterator rw_it = std::find( m_AllRenderWindows.begin(), m_AllRenderWindows.end(), renderWindow ); - // Decrease reference count for proper destruction - (*rw_it)->UnRegister(NULL); - m_AllRenderWindows.erase( rw_it ); + if ( rw_it != m_AllRenderWindows.end() ) + { + // Decrease reference count for proper destruction + (*rw_it)->UnRegister(NULL); + m_AllRenderWindows.erase( rw_it ); + } } }