fixed mem leaks
authorMatthias Kramm <kramm@quiss.org>
Fri, 23 Jan 2009 22:34:44 +0000 (14:34 -0800)
committerMatthias Kramm <kramm@quiss.org>
Fri, 23 Jan 2009 22:34:44 +0000 (14:34 -0800)
lib/devices/swf.c
lib/pdf/GFXOutputDev.cc

index 2969e75..20cb71b 100644 (file)
@@ -1622,6 +1622,8 @@ void swfoutput_linktourl(gfxdevice_t*dev, const char*url, gfxline_t*points)
     actions = action_End(actions);
    
     drawlink(dev, actions, 0, points, 0, url);
     actions = action_End(actions);
    
     drawlink(dev, actions, 0, points, 0, url);
+
+    swf_ActionFree(actions);
 }
 void swfoutput_linktopage(gfxdevice_t*dev, int page, gfxline_t*points)
 {
 }
 void swfoutput_linktopage(gfxdevice_t*dev, int page, gfxline_t*points)
 {
@@ -1648,6 +1650,8 @@ void swfoutput_linktopage(gfxdevice_t*dev, int page, gfxline_t*points)
     sprintf(name, "page%d", page);
 
     drawlink(dev, actions, 0, points, 0, name);
     sprintf(name, "page%d", page);
 
     drawlink(dev, actions, 0, points, 0, name);
+    
+    swf_ActionFree(actions);
 }
 
 /* Named Links (a.k.a. Acrobatmenu) are used to implement various gadgets
 }
 
 /* Named Links (a.k.a. Acrobatmenu) are used to implement various gadgets
index 93eda13..5f397f1 100644 (file)
@@ -1627,7 +1627,8 @@ void GFXOutputDev::processLink(Link *link, Catalog *catalog)
             LinkDest *dest=NULL;
             if (ha->getDest()==NULL) 
                 dest=catalog->findDest(ha->getNamedDest());
             LinkDest *dest=NULL;
             if (ha->getDest()==NULL) 
                 dest=catalog->findDest(ha->getNamedDest());
-            else dest=ha->getDest();
+            else 
+                dest=ha->getDest()->copy();
             if (dest){ 
               if (dest->isPageRef()){
                 Ref pageref=dest->getPageRef();
             if (dest){ 
               if (dest->isPageRef()){
                 Ref pageref=dest->getPageRef();
@@ -1636,6 +1637,7 @@ void GFXOutputDev::processLink(Link *link, Catalog *catalog)
               else  page=dest->getPageNum();
               sprintf(buf, "%d", page);
               s = strdup(buf);
               else  page=dest->getPageNum();
               sprintf(buf, "%d", page);
               s = strdup(buf);
+              delete dest;
             }
         }
         break;
             }
         }
         break;