diff --git a/DesktopEditor/doctrenderer/doctrenderer.pro b/DesktopEditor/doctrenderer/doctrenderer.pro index 080a7225df..a5789be704 100644 --- a/DesktopEditor/doctrenderer/doctrenderer.pro +++ b/DesktopEditor/doctrenderer/doctrenderer.pro @@ -111,6 +111,7 @@ include(../../Common/3dParty/openssl/openssl.pri) DEFINES += BUIDLER_OPEN_DOWNLOAD_ENABLED DEFINES += BUIDLER_OPEN_BASE64_ENABLED +CONFIG += drawingfile_support drawingfile_support { DEFINES += WASM_SERIALIZER_USE_ALLOCATOR ADD_DEPENDENCY(PdfFile, XpsFile, DjVuFile, DocxRenderer) diff --git a/DesktopEditor/doctrenderer/embed/DrawingFileEmbed.cpp b/DesktopEditor/doctrenderer/embed/DrawingFileEmbed.cpp index 12263c5eab..b7caf4daef 100644 --- a/DesktopEditor/doctrenderer/embed/DrawingFileEmbed.cpp +++ b/DesktopEditor/doctrenderer/embed/DrawingFileEmbed.cpp @@ -1,6 +1,6 @@ #include "DrawingFileEmbed.h" -JSSmart MoveMemoryToJS(BYTE* pWasmData) +JSSmart MoveMemoryToJS(BYTE* pWasmData, const bool& isFree = true) { if (NULL == pWasmData) return CJSContext::createNull(); @@ -13,7 +13,9 @@ JSSmart MoveMemoryToJS(BYTE* pWasmData) size_t nBufferSize = (size_t)(nLen - 4); BYTE* pMemory = NSJSBase::NSAllocator::Alloc(nBufferSize); memcpy(pMemory, pWasmData + 4, nBufferSize); - free(pWasmData); + + if (isFree) + free(pWasmData); return NSJSBase::CJSContext::createUint8Array(pMemory, (int)nBufferSize, false); } @@ -50,7 +52,7 @@ JSSmart CDrawingFileEmbed::GetPixmap(JSSmart nPageIndex, JSS JSSmart CDrawingFileEmbed::GetGlyphs(JSSmart nPageIndex) { - return MoveMemoryToJS(m_pFile->GetGlyphs(nPageIndex->toInt32())); + return MoveMemoryToJS(m_pFile->GetGlyphs(nPageIndex->toInt32()), false); } JSSmart CDrawingFileEmbed::GetLinks(JSSmart nPageIndex) {