From 56724b87ff3250a55a32e4d87b2896a6f07d8041 Mon Sep 17 00:00:00 2001 From: Redmond Urbino Date: Tue, 21 Aug 2007 18:36:24 +0000 Subject: [PATCH] Josh's better version which handles multiple keys pointing to the same data. --- panda/src/ode/odeTriMeshData.cxx | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) 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; } } + //////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////