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); |