diff --git a/mozilla/xpcom/threads/nsEventQueue.cpp b/mozilla/xpcom/threads/nsEventQueue.cpp index 8555b88076e..d09cb35b10f 100644 --- a/mozilla/xpcom/threads/nsEventQueue.cpp +++ b/mozilla/xpcom/threads/nsEventQueue.cpp @@ -58,6 +58,15 @@ nsEventQueue::nsEventQueue() nsEventQueue::~nsEventQueue() { + { + nsAutoMonitor mon(mMonitor); + + NS_ASSERTION(IsEmpty(), "Non-empty event queue being destroyed; events being leaked."); + + if (mHead) + FreePage(mHead); + } + if (mMonitor) nsAutoMonitor::DestroyMonitor(mMonitor); } diff --git a/mozilla/xpcom/threads/nsThread.cpp b/mozilla/xpcom/threads/nsThread.cpp index 0c06f5374fe..e208f925b5f 100644 --- a/mozilla/xpcom/threads/nsThread.cpp +++ b/mozilla/xpcom/threads/nsThread.cpp @@ -587,6 +587,8 @@ nsThread::PopEventQueue() nsCOMPtr event; while (queue->GetEvent(PR_FALSE, getter_AddRefs(event))) mEvents->PutEvent(event); + + delete queue; return NS_OK; }