Index: Source/modules/serviceworkers/ServiceWorker.cpp |
diff --git a/Source/modules/serviceworkers/ServiceWorker.cpp b/Source/modules/serviceworkers/ServiceWorker.cpp |
index 2974a93ab3584ea5965086125359c4ee211fae8d..2bdf84df6a6dd01764ee808dacd7219658880aa7 100644 |
--- a/Source/modules/serviceworkers/ServiceWorker.cpp |
+++ b/Source/modules/serviceworkers/ServiceWorker.cpp |
@@ -156,6 +156,12 @@ PassRefPtrWillBeRawPtr<ServiceWorker> ServiceWorker::from(ExecutionContext* exec |
PassRefPtrWillBeRawPtr<ServiceWorker> ServiceWorker::from(ScriptPromiseResolver* resolver, WebType* worker) |
{ |
+ if (resolver->scriptState()->contextIsEmpty()) { |
haraken
2014/07/17 07:53:36
Shouldn't this check be if(!resolver->scriptState-
nhiroki
2014/07/17 08:30:02
ScriptState::executionContext() refers to V8::Cont
|
+ if (worker && !worker->proxy()) |
+ delete worker; |
haraken
2014/07/17 07:53:36
I don't understand the memory management here eith
|
+ return nullptr; |
+ } |
+ |
RefPtrWillBeRawPtr<ServiceWorker> serviceWorker = ServiceWorker::from(resolver->scriptState()->executionContext(), worker); |
ScriptState::Scope scope(resolver->scriptState()); |
serviceWorker->waitOnPromise(resolver->promise()); |