[poppler] poppler/Page.cc

Albert Astals Cid aacid at kemper.freedesktop.org
Mon May 26 11:40:57 PDT 2008


 poppler/Page.cc |   35 ++++++++++++++++++-----------------
 1 file changed, 18 insertions(+), 17 deletions(-)

New commits:
commit 79ab8cceb318f3bb5ebad431824e3ae593aea340
Author: Albert Astals Cid <aacid at kde.org>
Date:   Mon May 26 20:38:59 2008 +0200

    Do not leak memory if data_out is NULL

diff --git a/poppler/Page.cc b/poppler/Page.cc
index b28a3ee..90417e1 100644
--- a/poppler/Page.cc
+++ b/poppler/Page.cc
@@ -518,30 +518,31 @@ GBool Page::loadThumb(unsigned char **data_out,
     goto fail1;
   }
 
-  pixbufdata = (unsigned char *) gmalloc(pixbufdatasize);
-  p = pixbufdata;
-  imgstr = new ImageStream(str, width,
+  if (data_out) {
+    pixbufdata = (unsigned char *) gmalloc(pixbufdatasize);
+    p = pixbufdata;
+    imgstr = new ImageStream(str, width,
 			   colorMap->getNumPixelComps(),
 			   colorMap->getBits());
-  imgstr->reset();
-  for (row = 0; row < height; ++row) {
-    for (col = 0; col < width; ++col) {
-      Guchar pix[gfxColorMaxComps];
-      GfxRGB rgb;
-
-      imgstr->getPixel(pix);
-      colorMap->getRGB(pix, &rgb);
-
-      *p++ = colToByte(rgb.r);
-      *p++ = colToByte(rgb.g);
-      *p++ = colToByte(rgb.b);
+    imgstr->reset();
+    for (row = 0; row < height; ++row) {
+      for (col = 0; col < width; ++col) {
+        Guchar pix[gfxColorMaxComps];
+        GfxRGB rgb;
+
+        imgstr->getPixel(pix);
+        colorMap->getRGB(pix, &rgb);
+
+        *p++ = colToByte(rgb.r);
+        *p++ = colToByte(rgb.g);
+        *p++ = colToByte(rgb.b);
+      }
     }
+    *data_out = pixbufdata;
   }
 
   success = gTrue;
 
-  if (data_out)
-    *data_out = pixbufdata;
   if (width_out)
     *width_out = width;
   if (height_out)


More information about the poppler mailing list