From 9830cb935e28d7cf338652252449894d89a41bad Mon Sep 17 00:00:00 2001 From: Brendan Dahl Date: Tue, 15 Nov 2011 14:43:05 -0800 Subject: [PATCH 1/2] Fix two memory leaks. --- test/driver.js | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/test/driver.js b/test/driver.js index e84b7c8e0..4613f1962 100644 --- a/test/driver.js +++ b/test/driver.js @@ -56,23 +56,31 @@ function load() { } function cleanup() { - var styleSheet = document.styleSheets[0]; - if (styleSheet) { - while (styleSheet.cssRules.length > 0) - styleSheet.deleteRule(0); + // Clear out all the stylesheets since a new one is created for each font. + while (document.styleSheets.length > 0) { + var styleSheet = document.styleSheets[0]; + if (styleSheet) { + while (styleSheet.cssRules.length > 0) + styleSheet.deleteRule(0); + } + var parent = styleSheet.ownerNode.parentNode; + parent.removeChild(styleSheet.ownerNode); } var guard = document.getElementById('content-end'); var body = document.body; while (body.lastChild !== guard) body.removeChild(body.lastChild); + + // Wipe out the link to the pdfdoc so it can be GC'ed. + for (var i = 0; i < manifest.length; i++) { + if (manifest[i].pdfDoc) { + manifest[i].pdfDoc.destroy(); + delete manifest[i].pdfDoc + } + } } function nextTask() { - // If there is a pdfDoc on the last task executed, destroy it to free memory. - if (task && task.pdfDoc) { - task.pdfDoc.destroy(); - delete task.pdfDoc; - } cleanup(); if (currentTaskIdx == manifest.length) { From 29c21843d621700aa34a3c3ca76ce5f8d0afb72a Mon Sep 17 00:00:00 2001 From: Brendan Dahl Date: Tue, 15 Nov 2011 15:45:37 -0800 Subject: [PATCH 2/2] Nits --- test/driver.js | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/test/driver.js b/test/driver.js index 4613f1962..c11cecf56 100644 --- a/test/driver.js +++ b/test/driver.js @@ -59,12 +59,10 @@ function cleanup() { // Clear out all the stylesheets since a new one is created for each font. while (document.styleSheets.length > 0) { var styleSheet = document.styleSheets[0]; - if (styleSheet) { - while (styleSheet.cssRules.length > 0) - styleSheet.deleteRule(0); - } - var parent = styleSheet.ownerNode.parentNode; - parent.removeChild(styleSheet.ownerNode); + while (styleSheet.cssRules.length > 0) + styleSheet.deleteRule(0); + var ownerNode = styleSheet.ownerNode; + ownerNode.parentNode.removeChild(ownerNode); } var guard = document.getElementById('content-end'); var body = document.body; @@ -75,7 +73,7 @@ function cleanup() { for (var i = 0; i < manifest.length; i++) { if (manifest[i].pdfDoc) { manifest[i].pdfDoc.destroy(); - delete manifest[i].pdfDoc + delete manifest[i].pdfDoc; } } }