Browse Source

fix unnamed type bug

David Rose 24 years ago
parent
commit
a5eff41ecc

+ 5 - 0
dtool/src/interrogate/interrogateBuilder.cxx

@@ -1777,6 +1777,11 @@ get_type(CPPType *type, bool global) {
   if (tni != _types_by_name.end()) {
     // It's already here, so update the global flag.
     index = (*tni).second;
+    if (index == 0) {
+      // This is an invalid type; we don't know anything about it.
+      return 0;
+    }
+
     InterrogateType &itype = InterrogateDatabase::get_ptr()->update_type(index);
     if (global) {
       itype._flags |= InterrogateType::F_global;

+ 3 - 0
dtool/src/interrogatedb/interrogateDatabase.cxx

@@ -501,6 +501,7 @@ get_next_index() {
 ////////////////////////////////////////////////////////////////////
 void InterrogateDatabase::
 add_type(TypeIndex index, const InterrogateType &type) {
+  assert(index != 0);
   bool inserted =
     _type_map.insert(TypeMap::value_type(index, type)).second;
 
@@ -593,6 +594,7 @@ add_element(ElementIndex index, const InterrogateElement &element) {
 ////////////////////////////////////////////////////////////////////
 InterrogateType &InterrogateDatabase::
 update_type(TypeIndex type) {
+  assert(type != 0);
   check_latest();
   return _type_map[type];
 }
@@ -697,6 +699,7 @@ remap_indices(int first_index, IndexRemapper &remap) {
   TypeMap new_type_map;
   TypeMap::iterator ti;
   for (ti = _type_map.begin(); ti != _type_map.end(); ++ti) {
+    assert((*ti).first != 0);
     remap.add_mapping((*ti).first, first_index);
     new_type_map[first_index] = (*ti).second;
     first_index++;