зеркало из https://github.com/mozilla/pjs.git
rest of Bug 339774, nsDOMEvent::DuplicatePrivateData should copy more things from the original event, r+sr=bz
This commit is contained in:
Родитель
156339d5b5
Коммит
aa3c59a622
|
@ -135,7 +135,7 @@ nsDOMEvent::~nsDOMEvent()
|
|||
{
|
||||
NS_ASSERT_OWNINGTHREAD(nsDOMEvent);
|
||||
|
||||
if (mEventIsInternal) {
|
||||
if (mEventIsInternal && mEvent) {
|
||||
delete mEvent->userType;
|
||||
delete mEvent;
|
||||
}
|
||||
|
@ -687,14 +687,13 @@ NS_METHOD nsDOMEvent::DuplicatePrivateData()
|
|||
{
|
||||
nsMutationEvent* mutationEvent = new nsMutationEvent(PR_FALSE, msg);
|
||||
NS_ENSURE_TRUE(mutationEvent, NS_ERROR_OUT_OF_MEMORY);
|
||||
/* Disabling for now. This creates some leaks.
|
||||
nsMutationEvent* oldMutationEvent =
|
||||
NS_STATIC_CAST(nsMutationEvent*, mEvent);
|
||||
mutationEvent->mRelatedNode = oldMutationEvent->mRelatedNode;
|
||||
mutationEvent->mAttrName = oldMutationEvent->mAttrName;
|
||||
mutationEvent->mPrevAttrValue = oldMutationEvent->mPrevAttrValue;
|
||||
mutationEvent->mNewAttrValue = oldMutationEvent->mNewAttrValue;
|
||||
mutationEvent->mAttrChange = oldMutationEvent->mAttrChange;*/
|
||||
mutationEvent->mAttrChange = oldMutationEvent->mAttrChange;
|
||||
newEvent = mutationEvent;
|
||||
break;
|
||||
}
|
||||
|
@ -789,9 +788,8 @@ NS_METHOD nsDOMEvent::DuplicatePrivateData()
|
|||
NS_ENSURE_TRUE(newEvent, NS_ERROR_OUT_OF_MEMORY);
|
||||
isInputEvent = PR_TRUE;
|
||||
newEvent->eventStructType = NS_XUL_COMMAND_EVENT;
|
||||
/* Disabling for now. This creates some leaks.
|
||||
NS_STATIC_CAST(nsXULCommandEvent*, newEvent)->sourceEvent =
|
||||
NS_STATIC_CAST(nsXULCommandEvent*, mEvent)->sourceEvent; */
|
||||
NS_STATIC_CAST(nsXULCommandEvent*, mEvent)->sourceEvent;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
|
|
@ -50,6 +50,16 @@ nsDOMMutationEvent::nsDOMMutationEvent(nsPresContext* aPresContext,
|
|||
mEventIsInternal = (aEvent == nsnull);
|
||||
}
|
||||
|
||||
nsDOMMutationEvent::~nsDOMMutationEvent()
|
||||
{
|
||||
if (mEventIsInternal) {
|
||||
delete mEvent->userType;
|
||||
nsMutationEvent* mutation = NS_STATIC_CAST(nsMutationEvent*, mEvent);
|
||||
delete mutation;
|
||||
mEvent = nsnull;
|
||||
}
|
||||
}
|
||||
|
||||
NS_INTERFACE_MAP_BEGIN(nsDOMMutationEvent)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIDOMMutationEvent)
|
||||
NS_INTERFACE_MAP_ENTRY_CONTENT_CLASSINFO(MutationEvent)
|
||||
|
|
|
@ -49,6 +49,8 @@ class nsDOMMutationEvent : public nsIDOMMutationEvent,
|
|||
{
|
||||
public:
|
||||
nsDOMMutationEvent(nsPresContext* aPresContext, nsMutationEvent* aEvent);
|
||||
|
||||
virtual ~nsDOMMutationEvent();
|
||||
|
||||
NS_DECL_ISUPPORTS_INHERITED
|
||||
|
||||
|
|
|
@ -55,6 +55,12 @@ nsDOMXULCommandEvent::nsDOMXULCommandEvent(nsPresContext* aPresContext,
|
|||
|
||||
nsDOMXULCommandEvent::~nsDOMXULCommandEvent()
|
||||
{
|
||||
if (mEventIsInternal) {
|
||||
delete mEvent->userType;
|
||||
nsXULCommandEvent* command = NS_STATIC_CAST(nsXULCommandEvent*, mEvent);
|
||||
delete command;
|
||||
mEvent = nsnull;
|
||||
}
|
||||
}
|
||||
|
||||
NS_IMPL_ADDREF_INHERITED(nsDOMXULCommandEvent, nsDOMUIEvent)
|
||||
|
|
Загрузка…
Ссылка в новой задаче