Fix NULL pointer access in ~virtual_identity.

develop
Alexander Gavrilov 2012-08-26 22:43:18 +04:00
parent 84f6663a07
commit b2bdc199cb
2 changed files with 5 additions and 3 deletions

@ -218,8 +218,10 @@ virtual_identity::virtual_identity(size_t size, TAllocateFn alloc,
virtual_identity::~virtual_identity() virtual_identity::~virtual_identity()
{ {
// Remove interpose entries, so that they don't try accessing this object later // Remove interpose entries, so that they don't try accessing this object later
while (!interpose_list.empty()) for (auto it = interpose_list.begin(); it != interpose_list.end(); ++it)
interpose_list.begin()->second->on_host_delete(this); if (it->second)
it->second->on_host_delete(this);
interpose_list.clear();
} }
/* Vtable name to identity lookup. */ /* Vtable name to identity lookup. */

@ -311,7 +311,7 @@ void VMethodInterposeLinkBase::on_host_delete(virtual_identity *from)
// Unlink the chains // Unlink the chains
child_hosts.erase(from); child_hosts.erase(from);
from->interpose_list.erase(vmethod_idx); from->interpose_list[vmethod_idx] = NULL;
} }
} }