diff --git a/layout/base/nsDisplayList.cpp b/layout/base/nsDisplayList.cpp index 46680ddd291..ce0f550d35f 100644 --- a/layout/base/nsDisplayList.cpp +++ b/layout/base/nsDisplayList.cpp @@ -598,8 +598,10 @@ void nsDisplayListBuilder::MarkOutOfFlowFrameForDisplay(nsIFrame* aDirtyFrame, if (!dirty.IntersectRect(dirty, overflowRect)) return; - aFrame->Properties().Set(nsDisplayListBuilder::OutOfFlowDisplayDataProperty(), - new OutOfFlowDisplayData(mClipState.GetClipForContainingBlockDescendants(), dirty)); + const DisplayItemClip* clip = mClipState.GetClipForContainingBlockDescendants(); + OutOfFlowDisplayData* data = clip ? new OutOfFlowDisplayData(*clip, dirty) + : new OutOfFlowDisplayData(dirty); + aFrame->Properties().Set(nsDisplayListBuilder::OutOfFlowDisplayDataProperty(), data); MarkFrameForDisplay(aFrame, aDirtyFrame); } diff --git a/layout/base/nsDisplayList.h b/layout/base/nsDisplayList.h index 4097ef42259..ac37ad4ccca 100644 --- a/layout/base/nsDisplayList.h +++ b/layout/base/nsDisplayList.h @@ -574,12 +574,15 @@ public: void SetCurrentTableItem(nsDisplayTableItem* aTableItem) { mCurrentTableItem = aTableItem; } struct OutOfFlowDisplayData { - OutOfFlowDisplayData(const DisplayItemClip* aContainingBlockClip, + OutOfFlowDisplayData(const DisplayItemClip& aContainingBlockClip, const nsRect &aDirtyRect) : mContainingBlockClip(aContainingBlockClip) , mDirtyRect(aDirtyRect) {} - const DisplayItemClip* mContainingBlockClip; + OutOfFlowDisplayData(const nsRect &aDirtyRect) + : mDirtyRect(aDirtyRect) + {} + DisplayItemClip mContainingBlockClip; nsRect mDirtyRect; }; static void DestroyOutOfFlowDisplayData(void* aPropertyValue) diff --git a/layout/generic/nsFrame.cpp b/layout/generic/nsFrame.cpp index 020cab8dde2..c799e5ed43b 100644 --- a/layout/generic/nsFrame.cpp +++ b/layout/generic/nsFrame.cpp @@ -2107,7 +2107,7 @@ nsIFrame::BuildDisplayListForChild(nsDisplayListBuilder* aBuilder, if (savedOutOfFlowData) { clipState.SetClipForContainingBlockDescendants( - savedOutOfFlowData->mContainingBlockClip); + &savedOutOfFlowData->mContainingBlockClip); } // Setup clipping for the parent's overflow:-moz-hidden-unscrollable,