diff --git a/panda/src/ode/odeTriMeshData.cxx b/panda/src/ode/odeTriMeshData.cxx index ff63ea45bd..9f4789d983 100755 --- a/panda/src/ode/odeTriMeshData.cxx +++ b/panda/src/ode/odeTriMeshData.cxx @@ -57,20 +57,30 @@ print_data(const string &marker) { void OdeTriMeshData:: remove_data(OdeTriMeshData *data) { odetrimeshdata_cat.debug() << get_class_type() << "::remove_data(" << data->get_id() << ")" << "\n"; - TriMeshDataMap::iterator iter = _tri_mesh_data_map.begin(); - int i = 0; - for (;iter != _tri_mesh_data_map.end(); ++iter) { - odetrimeshdata_cat.debug() << i<< " iter->first=" << iter->first << " iter->second=" << iter->second <<"\n"; + TriMeshDataMap::iterator iter; + + for (iter = _tri_mesh_data_map.begin(); + iter != _tri_mesh_data_map.end(); + ++iter) { if ( iter->second == data ) { - odetrimeshdata_cat.debug() << "erasing iter->first=" << iter->first << " iter->second=" << iter->second <<"\n"; - _tri_mesh_data_map.erase(iter); - return; - //iter = _tri_mesh_data_map.end(); + break; + } + } + + while (iter != _tri_mesh_data_map.end()) { + _tri_mesh_data_map.erase(iter); + + for (iter = _tri_mesh_data_map.begin(); + iter != _tri_mesh_data_map.end(); + ++iter) { + if ( iter->second == data ) { + break; + } } - ++i; } } + //////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////