further fixes to bam crash

This commit is contained in:
David Rose 2009-06-03 23:06:42 +00:00
parent f42935b8e9
commit 6f8c011bb3

View File

@ -334,8 +334,12 @@ resolve() {
}
_created_objs_by_pointer.erase(object_ptr);
// We can't finalize the old pointer any more either.
_finalize_list.erase(object_ptr);
Finalize::iterator fi = _finalize_list.find(object_ptr);
if (fi != _finalize_list.end()) {
// Change the pointer in the finalize list.
_finalize_list.erase(fi);
_finalize_list.insert(new_ptr);
}
}
created_obj._ptr = new_ptr;
created_obj._change_this = NULL;
@ -978,9 +982,17 @@ p_read_object() {
// immediately.
ObjectPointers::const_iterator ri = _object_pointers.find(object_id);
if (ri == _object_pointers.end()) {
Finalize::iterator fi = _finalize_list.find((TypedWritable *)object);
object = created_obj._change_this(object, this);
created_obj._ptr = object;
created_obj._change_this = NULL;
if (fi != _finalize_list.end()) {
// Change the pointer in the finalize list.
_finalize_list.erase(fi);
_finalize_list.insert(object);
}
}
}