diff --git a/dom/events/EventListenerManager.cpp b/dom/events/EventListenerManager.cpp index 4671f89f88..221b464773 100644 --- a/dom/events/EventListenerManager.cpp +++ b/dom/events/EventListenerManager.cpp @@ -751,6 +751,8 @@ EventListenerManager::SetEventHandler(nsIAtom* aName, bool aPermitUntrustedEvents, Element* aElement) { + auto removeEventHandler = MakeScopeExit([&] { RemoveEventHandler(aName, EmptyString()); }); + nsCOMPtr doc; nsCOMPtr global = GetScriptGlobalAndDocument(getter_AddRefs(doc)); @@ -825,6 +827,8 @@ EventListenerManager::SetEventHandler(nsIAtom* aName, NS_ENSURE_TRUE(context, NS_ERROR_FAILURE); NS_ENSURE_STATE(global->GetGlobalJSObject()); + removeEventHandler.release(); + Listener* listener = SetEventHandlerInternal(aName, EmptyString(), TypedEventHandler(),