don't crash loading old bam files

This commit is contained in:
David Rose 2005-05-13 20:05:47 +00:00
parent a11b778aab
commit 202acf938b

View File

@ -1685,13 +1685,20 @@ complete_pointers(TypedWritable **p_list, BamReader *manager) {
int pi = TypedWritable::complete_pointers(p_list, manager); int pi = TypedWritable::complete_pointers(p_list, manager);
// Get the attribute pointers. // Get the attribute pointers.
Attributes::iterator ai; for (size_t i = 0; i < _attributes.size(); ++i) {
for (ai = _attributes.begin(); ai != _attributes.end(); ++ai) { Attribute &attribute = _attributes[i];
Attribute &attribute = (*ai);
attribute._attrib = DCAST(RenderAttrib, p_list[pi++]); TypedWritable *ptr = p_list[pi++];
nassertr(attribute._attrib != (RenderAttrib *)NULL, pi); while (ptr == NULL && i < _attributes.size()) {
attribute._type = attribute._attrib->get_type(); // This is an attribute that we weren't able to load from the
// bam file. Remove it.
_attributes.pop_back();
ptr = p_list[pi++];
}
if (i < _attributes.size()) {
attribute._attrib = DCAST(RenderAttrib, ptr);
attribute._type = attribute._attrib->get_type();
}
} }
// Now make sure the array is properly sorted. (It won't // Now make sure the array is properly sorted. (It won't