diff --git a/view/src/nsView.cpp b/view/src/nsView.cpp index 3036c74aa36..d51f5eabdd0 100644 --- a/view/src/nsView.cpp +++ b/view/src/nsView.cpp @@ -9,13 +9,10 @@ #include "mozilla/DebugOnly.h" #include "mozilla/Likely.h" #include "nsIWidget.h" -#include "nsWidgetsCID.h" #include "nsViewManager.h" #include "nsIFrame.h" #include "nsGUIEvent.h" -#include "nsIComponentManager.h" -#include "nsGfxCIID.h" -#include "nsIInterfaceRequestor.h" +#include "nsPresArena.h" #include "nsXULPopupManager.h" #include "nsIWidgetListener.h" @@ -134,7 +131,16 @@ nsView* nsView::GetViewFor(nsIWidget* aWidget) void nsView::Destroy() { - delete this; + this->~nsView(); + + const uintptr_t POISON = nsPresArena::GetPoisonValue(); + char* p = reinterpret_cast(this); + char* limit = p + sizeof(*this); + for (; p < limit; p += sizeof(uintptr_t)) { + *reinterpret_cast(p) = POISON; + } + + nsView::operator delete(this); } void nsView::SetPosition(nscoord aX, nscoord aY)