From 5c10b418768b02fe7c501de5d75b414bdfd9166c Mon Sep 17 00:00:00 2001 From: Doug Turner Date: Mon, 16 Aug 2010 21:45:12 -0700 Subject: [PATCH] bug 582644 test fix followup; r= blocking-fennec=2.0a1+ --HG-- extra : rebase_source : c83b18c96bda0a979455bc785612202f1b5af381 --- dom/ipc/TabChild.cpp | 2 ++ widget/public/nsGUIEvent.h | 22 ---------------------- widget/public/nsGUIEventIPC.h | 17 ++++++++++++++--- 3 files changed, 16 insertions(+), 25 deletions(-) diff --git a/dom/ipc/TabChild.cpp b/dom/ipc/TabChild.cpp index 55caa675d92..4538e8fab86 100644 --- a/dom/ipc/TabChild.cpp +++ b/dom/ipc/TabChild.cpp @@ -54,6 +54,7 @@ #include "mozilla/ipc/DocumentRendererChild.h" #include "mozilla/ipc/DocumentRendererShmemChild.h" #include "mozilla/ipc/DocumentRendererNativeIDChild.h" +#include "mozilla/widget/nsGUIEventIPC.h" #include "nsIInterfaceRequestorUtils.h" #include "nsPIDOMWindow.h" #include "nsIDOMWindowUtils.h" @@ -735,6 +736,7 @@ TabChild::RecvTextEvent(const nsTextEvent& event) { nsTextEvent localEvent(event); DispatchWidgetEvent(localEvent); + IPC::ParamTraits::Free(event); return true; } diff --git a/widget/public/nsGUIEvent.h b/widget/public/nsGUIEvent.h index a8a0da74007..54b4f90f27f 100644 --- a/widget/public/nsGUIEvent.h +++ b/widget/public/nsGUIEvent.h @@ -1054,36 +1054,14 @@ private: friend class mozilla::dom::PBrowserChild; nsTextEvent() - : mOwnRangeArray(PR_FALSE), rangeArray(nsnull) { } - - PRPackedBool mOwnRangeArray; - -public: - ~nsTextEvent() - { - if (mOwnRangeArray && rangeArray) - delete [] rangeArray; - } - - nsTextRangeArray AllocRangeArray(PRUint32 aCount) - { - NS_ASSERTION(!rangeArray, "rangeArray already allocated"); - mOwnRangeArray = PR_TRUE; - rangeCount = aCount; - rangeArray = new nsTextRange[aCount]; - return rangeArray; - } #endif // MOZ_IPC public: nsTextEvent(PRBool isTrusted, PRUint32 msg, nsIWidget *w) : nsInputEvent(isTrusted, msg, w, NS_TEXT_EVENT), rangeCount(0), rangeArray(nsnull), isChar(PR_FALSE) -#ifdef MOZ_IPC - , mOwnRangeArray(PR_FALSE) -#endif { } diff --git a/widget/public/nsGUIEventIPC.h b/widget/public/nsGUIEventIPC.h index f42665467c0..9c09d112a86 100644 --- a/widget/public/nsGUIEventIPC.h +++ b/widget/public/nsGUIEventIPC.h @@ -179,17 +179,28 @@ struct ParamTraits !ReadParam(aMsg, aIter, &aResult->rangeCount)) return false; - if (!aResult->rangeCount) + if (!aResult->rangeCount) { + aResult->rangeArray = nsnull; return true; + } - if (!aResult->AllocRangeArray(aResult->rangeCount)) + aResult->rangeArray = new nsTextRange[aResult->rangeCount]; + if (!aResult->rangeArray) return false; for (PRUint32 index = 0; index < aResult->rangeCount; index++) - if (!ReadParam(aMsg, aIter, &aResult->rangeArray[index])) + if (!ReadParam(aMsg, aIter, &aResult->rangeArray[index])) { + Free(*aResult); return false; + } return true; } + + static void Free(const paramType& aResult) + { + if (aResult.rangeArray) + delete [] aResult.rangeArray; + } }; template<>