Bug 609083 - 'Workers: Fix leak introduced by structured clone change'. r=jst, a=blocking+

This commit is contained in:
Ben Turner 2010-11-10 16:04:03 -08:00
Родитель 4ba6ae28f4
Коммит d547219ae6
2 изменённых файлов: 16 добавлений и 0 удалений

Просмотреть файл

@ -41,11 +41,13 @@
#include "nsIXMLHttpRequest.h"
#include "nsIXPConnect.h"
#include "jsapi.h"
#include "nsAXPCNativeCallContext.h"
#include "nsContentUtils.h"
#include "nsThreadUtils.h"
#include "nsDOMWorkerMessageHandler.h"
#include "nsDOMThreadService.h"
#include "nsDOMWorkerXHR.h"
#include "nsDOMWorkerXHRProxy.h"
@ -255,6 +257,19 @@ nsDOMWorkerEvent::InitEvent(const nsAString& aEventTypeArg,
return NS_OK;
}
nsDOMWorkerMessageEvent::~nsDOMWorkerMessageEvent()
{
if (mData) {
JSContext* cx = nsDOMThreadService::GetCurrentContext();
if (cx) {
JS_free(cx, mData);
}
else {
NS_WARNING("Failed to get safe JSContext, leaking event data!");
}
}
}
NS_IMPL_ISUPPORTS_INHERITED1(nsDOMWorkerMessageEvent, nsDOMWorkerEvent,
nsIWorkerMessageEvent)

Просмотреть файл

@ -212,6 +212,7 @@ public:
NS_DECL_NSICLASSINFO_GETINTERFACES
nsDOMWorkerMessageEvent() : mData(nsnull) { }
~nsDOMWorkerMessageEvent();
nsresult SetJSData(JSContext* aCx,
JSAutoStructuredCloneBuffer& aBuffer);