author | Mats Palmgren <matspal@gmail.com> |
Tue, 06 Nov 2012 00:35:45 +0100 | |
changeset 112360 | ea8d002c4d6db1f6fdafcc92b6a26beb73155a67 |
parent 112359 | c697c428739d1014d81e7e8b0afe8b28f5a08642 |
child 112361 | 475ae0fac54edc699ae90f9be2296341ba48bc9c |
push id | 23812 |
push user | emorley@mozilla.com |
push date | Tue, 06 Nov 2012 14:01:34 +0000 |
treeherder | mozilla-central@f4aeed115e54 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | roc |
bugs | 806483 |
milestone | 19.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/layout/base/nsPresShell.cpp +++ b/layout/base/nsPresShell.cpp @@ -34,16 +34,17 @@ #include "nsIDocument.h" #include "nsIDOMXULDocument.h" #include "nsCSSStyleSheet.h" // XXX for UA sheet loading hack, can this go away please? #include "nsIDOMCSSStyleSheet.h" // for Pref-related rule management (bugs 22963,20760,31816) #include "nsAnimationManager.h" #include "nsINameSpaceManager.h" // for Pref-related rule management (bugs 22963,20760,31816) #include "nsIServiceManager.h" #include "nsFrame.h" +#include "FrameLayerBuilder.h" #include "nsViewManager.h" #include "nsView.h" #include "nsCRTGlue.h" #include "prlog.h" #include "prprf.h" #include "prinrval.h" #include "nsTArray.h" #include "nsCOMArray.h" @@ -2020,16 +2021,23 @@ PresShell::NotifyDestroyingFrame(nsIFram //pop it we can still get its new frame from its content nsIContent *currentEventContent = aFrame->GetContent(); mCurrentEventContentStack.ReplaceObjectAt(currentEventContent, i); mCurrentEventFrameStack[i] = nullptr; } } mFramesToDirty.RemoveEntry(aFrame); + } else { + // We must delete this property in situ so that its destructor removes the + // frame from FrameLayerBuilder::DisplayItemData::mFrameList -- otherwise + // the DisplayItemData destructor will use the destroyed frame when it + // tries to remove it from the (array) value of this property. + mPresContext->PropertyTable()-> + Delete(aFrame, FrameLayerBuilder::LayerManagerDataProperty()); } } already_AddRefed<nsCaret> PresShell::GetCaret() const { nsCaret* caret = mCaret; NS_IF_ADDREF(caret); return caret;