Index: extended_type_info.cpp =================================================================== --- extended_type_info.cpp (revision 48426) +++ extended_type_info.cpp (working copy) @@ -93,10 +93,11 @@ // remove entry in map which corresponds to this type do{ if(this == *start){ - x.erase(start); - break; + start = x.erase(start); + } else { + ++start; } - }while(++start != end); + }while(start != end); m_key = NULL; } Index: extended_type_info_typeid.cpp =================================================================== --- extended_type_info_typeid.cpp (revision 45919) +++ extended_type_info_typeid.cpp (working copy) @@ -89,10 +89,11 @@ // remove entry in map which corresponds to this type do{ if(this == *start){ - x.erase(start); - break; - } - }while(++start != end); + start = x.erase(start); + } else { + ++start; + } + }while(start != end); m_ti = NULL; }