diff --git a/mozilla/docshell/base/nsDocShell.cpp b/mozilla/docshell/base/nsDocShell.cpp index 09002d5becb..10632e86d30 100644 --- a/mozilla/docshell/base/nsDocShell.cpp +++ b/mozilla/docshell/base/nsDocShell.cpp @@ -243,7 +243,6 @@ nsDocShell::nsDocShell(): mIsBeingDestroyed(PR_FALSE), mIsExecutingOnLoadHandler(PR_FALSE), mEditorData(nsnull), - mTransferableHookData(nsnull), mParent(nsnull), mTreeOwner(nsnull), mChromeEventHandler(nsnull), @@ -431,16 +430,9 @@ NS_IMETHODIMP nsDocShell::GetInterface(const nsIID & aIID, void **aSink) } else if (aIID.Equals(NS_GET_IID(nsIClipboardDragDropHookList)) && NS_SUCCEEDED(EnsureTransferableHookData())) { - nsCOMPtr hook = - NS_STATIC_CAST(nsIClipboardDragDropHookList *, mTransferableHookData); - if (hook) - { - *aSink = hook; - NS_ADDREF((nsISupports *)*aSink); - return NS_OK; - } - - return NS_NOINTERFACE; + *aSink = mTransferableHookData; + NS_ADDREF((nsISupports *)*aSink); + return NS_OK; } else if (aIID.Equals(NS_GET_IID(nsISelectionDisplay))) { nsCOMPtr shell; @@ -2991,9 +2983,6 @@ nsDocShell::Destroy() delete mEditorData; mEditorData = 0; - nsIClipboardDragDropHookList *list = NS_STATIC_CAST(nsIClipboardDragDropHookList *, mTransferableHookData); - NS_IF_RELEASE(list); - delete mTransferableHookData; mTransferableHookData = nsnull; // Save the state of the current document, before destroying the window. @@ -6741,13 +6730,12 @@ nsDocShell::EnsureEditorData() nsresult nsDocShell::EnsureTransferableHookData() { - if (!mTransferableHookData) { - mTransferableHookData = new nsTransferableHookData(); - if (!mTransferableHookData) return NS_ERROR_OUT_OF_MEMORY; - NS_ADDREF(NS_STATIC_CAST(nsIClipboardDragDropHookList *, mTransferableHookData)); - } + if (!mTransferableHookData) { + mTransferableHookData = new nsTransferableHookData(); // owning addref + if (!mTransferableHookData) return NS_ERROR_OUT_OF_MEMORY; + } - return NS_OK; + return NS_OK; } diff --git a/mozilla/docshell/base/nsDocShell.h b/mozilla/docshell/base/nsDocShell.h index 9df0f3ef8c3..07ccbe4cc23 100644 --- a/mozilla/docshell/base/nsDocShell.h +++ b/mozilla/docshell/base/nsDocShell.h @@ -362,7 +362,7 @@ protected: nsDocShellEditorData* mEditorData; // editor data, if any // Transferable hooks/callbacks - nsTransferableHookData* mTransferableHookData; + nsCOMPtr mTransferableHookData; // WEAK REFERENCES BELOW HERE. // Note these are intentionally not addrefd. Doing so will create a cycle.