Here's a proposed fix. I've added an implementation of Destroy to nsHTMLDocument, that overrides the original virtual nsDocument implementation.
void
nsHTMLDocument::Destroy()
{
nsDocument::Destroy();
InvalidateHashTables();
}
It calls back to the the nsDocument Destroy, and then invalidates the hash as an additional step. I've tested this, and I'm no longer able to reproduce the crash with the steps that caused it before.
This patch is against BonEcho. I'm a mozilla newbie, going from http://www.mozilla.org/hacking/life-cycle.html it sounds like I should really do this against top-of-tree, and then maybe it could get backported if necessary for a 2.0.x release?
Created attachment 261555
Proposed patch
Here's a proposed fix. I've added an implementation of Destroy to nsHTMLDocument, that overrides the original virtual nsDocument implementation. :Destroy( ) :Destroy( ); hTables( );
void
nsHTMLDocument:
{
nsDocument:
InvalidateHas
}
It calls back to the the nsDocument Destroy, and then invalidates the hash as an additional step. I've tested this, and I'm no longer able to reproduce the crash with the steps that caused it before.
This patch is against BonEcho. I'm a mozilla newbie, going from http:// www.mozilla. org/hacking/ life-cycle. html it sounds like I should really do this against top-of-tree, and then maybe it could get backported if necessary for a 2.0.x release?