]> git.parisson.com Git - pdf.js.git/commitdiff
Fix two memory leaks.
authorBrendan Dahl <brendan.dahl@gmail.com>
Tue, 15 Nov 2011 22:43:05 +0000 (14:43 -0800)
committerBrendan Dahl <brendan.dahl@gmail.com>
Tue, 15 Nov 2011 22:43:05 +0000 (14:43 -0800)
test/driver.js

index e84b7c8e089f4d291135b4040d6d8088cf523486..4613f1962e8b833efcc451fe0c1d9a2983e821cf 100644 (file)
@@ -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) {