diff options
-rw-r--r-- | fpdfsdk/src/jsapi/fxjs_v8.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/fpdfsdk/src/jsapi/fxjs_v8.cpp b/fpdfsdk/src/jsapi/fxjs_v8.cpp index ffe04bbfe5..b4b9929265 100644 --- a/fpdfsdk/src/jsapi/fxjs_v8.cpp +++ b/fpdfsdk/src/jsapi/fxjs_v8.cpp @@ -24,7 +24,7 @@ static unsigned int g_embedderDataSlot = 1u; // kPerContextDataStartIndex + kEmbedderPDFium, which is 3. static const unsigned int kPerContextDataIndex = 3u; -static v8::Global<v8::ObjectTemplate> g_DefaultGlobalObjectTemplate; +static v8::Global<v8::ObjectTemplate>* g_DefaultGlobalObjectTemplate = nullptr; class CFXJS_PrivateData { public: @@ -111,11 +111,12 @@ static v8::Local<v8::ObjectTemplate> GetGlobalObjectTemplate( return pObjDef->GetInstanceTemplate(); } - if (g_DefaultGlobalObjectTemplate.IsEmpty()) - g_DefaultGlobalObjectTemplate.Reset(pIsolate, - v8::ObjectTemplate::New(pIsolate)); - - return g_DefaultGlobalObjectTemplate.Get(pIsolate); + if (!g_DefaultGlobalObjectTemplate) { + g_DefaultGlobalObjectTemplate = new v8::Global<v8::ObjectTemplate>; + g_DefaultGlobalObjectTemplate->Reset(pIsolate, + v8::ObjectTemplate::New(pIsolate)); + } + return g_DefaultGlobalObjectTemplate->Get(pIsolate); } void* FXJS_ArrayBufferAllocator::Allocate(size_t length) { |