diff --git a/dtool/src/interrogatedb/py_panda.cxx b/dtool/src/interrogatedb/py_panda.cxx index 8fa3af1202..f07e46ad5f 100644 --- a/dtool/src/interrogatedb/py_panda.cxx +++ b/dtool/src/interrogatedb/py_panda.cxx @@ -233,14 +233,24 @@ void Dtool_Accum_MethDefs(PyMethodDef in[], MethodDefmap &themap) // /////////////////////////////////////////////////////////////////////////////// -void RegisterRuntimeClass(Dtool_PyTypedObject * otype, int class_id) -{ - if(class_id > 0) - { - GetRunTimeDictionary()[class_id] = otype; - GetRunTimeTypeList().insert(class_id); - otype->_Dtool_IsRunTimeCapable = true; +void +RegisterRuntimeClass(Dtool_PyTypedObject * otype, int class_id) { + if(class_id > 0) { + RunTimeTypeDictionary &dict = GetRunTimeDictionary(); + pair result = + dict.insert(RunTimeTypeDictionary::value_type(class_id, otype)); + if (!result.second) { + // There was already an entry in the dictionary for class_id. + Dtool_PyTypedObject *other_type = (*result.first).second; + interrogatedb_cat.warning() + << "Classes " << otype->_name << " and " << other_type->_name + << " share the same TypeHandle value; check class definitions.\n"; + + } else { + GetRunTimeTypeList().insert(class_id); + otype->_Dtool_IsRunTimeCapable = true; } + } }; ///////////////////////////////////////////////////////////////////////////////