| Index: fpdfsdk/src/javascript/JS_Runtime.cpp
|
| diff --git a/fpdfsdk/src/javascript/JS_Runtime.cpp b/fpdfsdk/src/javascript/JS_Runtime.cpp
|
| index 4b4328c701d4079ef6d2396d94e36542ee073dda..2ad5667b2e3d145afefbd82635300e81194097d9 100644
|
| --- a/fpdfsdk/src/javascript/JS_Runtime.cpp
|
| +++ b/fpdfsdk/src/javascript/JS_Runtime.cpp
|
| @@ -93,17 +93,36 @@ void CJS_RuntimeFactory::ReleaseGlobalData()
|
| }
|
| }
|
|
|
| +void* CJS_ArrayBufferAllocator::Allocate(size_t length) {
|
| + return calloc(1, length);
|
| +}
|
| +
|
| +void* CJS_ArrayBufferAllocator::AllocateUninitialized(size_t length) {
|
| + return malloc(length);
|
| +}
|
| +
|
| +void CJS_ArrayBufferAllocator::Free(void* data, size_t length) {
|
| + free(data);
|
| +}
|
| +
|
| /* ------------------------------ CJS_Runtime ------------------------------ */
|
| extern v8::Persistent<v8::ObjectTemplate>& _getGlobalObjectTemplate(IJS_Runtime* pJSRuntime);
|
| CJS_Runtime::CJS_Runtime(CPDFDoc_Environment* pApp) :
|
| m_pApp(pApp),
|
| m_pDocument(NULL),
|
| m_bBlocking(FALSE),
|
| - m_pFieldEventPath(NULL),
|
| - m_bRegistered(FALSE)
|
| + m_bRegistered(FALSE),
|
| + m_pFieldEventPath(NULL)
|
| {
|
| - m_isolate = FPDFXFA_GetApp()->GetJSERuntime()?(v8::Isolate*)FPDFXFA_GetApp()->GetJSERuntime():v8::Isolate::New();
|
| - //m_isolate->Enter();
|
| + if (FPDFXFA_GetApp()->GetJSERuntime()) {
|
| + m_isolate = (v8::Isolate*)FPDFXFA_GetApp()->GetJSERuntime();
|
| + } else {
|
| + m_pArrayBufferAllocator.reset(new CJS_ArrayBufferAllocator());
|
| + v8::Isolate::CreateParams params;
|
| + params.array_buffer_allocator = m_pArrayBufferAllocator.get();
|
| + m_isolate = v8::Isolate::New(params);
|
| + }
|
| +
|
| v8::Isolate* isolate = m_isolate;
|
| v8::Isolate::Scope isolate_scope(isolate);
|
| v8::Locker locker(isolate);
|
|
|