Skip to content

Commit e3e6826

Browse files
committed
Fix WASM memory leak causing incorrect page counts in batch conversion
Call renderer.delete() before creating new renderers to free WASM heap memory.
1 parent 59faa48 commit e3e6826

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

cli/converter.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,16 @@ const { encodeXTG, encodeXTH, buildXTCContainer } = require('./encoder');
1111
let Module = null;
1212
let renderer = null;
1313

14+
/**
15+
* Destroy renderer and free WASM memory
16+
*/
17+
function destroyRenderer() {
18+
if (renderer) {
19+
renderer.delete(); // Emscripten destructor - frees WASM heap
20+
renderer = null;
21+
}
22+
}
23+
1424
/**
1525
* Initialize CREngine WASM module
1626
*/
@@ -35,6 +45,7 @@ function createRenderer(width, height) {
3545
if (!Module) {
3646
throw new Error('WASM module not initialized. Call initWasm() first.');
3747
}
48+
destroyRenderer(); // Clean up existing renderer before creating new one
3849
renderer = new Module.EpubRenderer(width, height);
3950

4051
// Disable built-in status bar
@@ -226,9 +237,7 @@ function getOutputPath(inputPath, outputDir, format) {
226237
* Cleanup renderer resources
227238
*/
228239
function cleanup() {
229-
if (renderer) {
230-
renderer = null;
231-
}
240+
destroyRenderer();
232241
}
233242

234243
module.exports = {

0 commit comments

Comments
 (0)