pajoye          Wed Apr  4 11:40:11 2007 UTC

  Modified files:              (Branch: PHP_5_2)
    /php-src/ext/gd/libgd       gd_gif_in.c 
  Log:
  - do not try to use the global color map when none was found (Nuno, Pierre)
  - free im on error
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/gd/libgd/gd_gif_in.c?r1=1.5.4.2.2.10&r2=1.5.4.2.2.11&diff_format=u
Index: php-src/ext/gd/libgd/gd_gif_in.c
diff -u php-src/ext/gd/libgd/gd_gif_in.c:1.5.4.2.2.10 
php-src/ext/gd/libgd/gd_gif_in.c:1.5.4.2.2.11
--- php-src/ext/gd/libgd/gd_gif_in.c:1.5.4.2.2.10       Wed Apr  4 01:34:50 2007
+++ php-src/ext/gd/libgd/gd_gif_in.c    Wed Apr  4 11:40:11 2007
@@ -142,7 +142,7 @@
        /*1.4//int             imageCount = 0; */
 
        int ZeroDataBlock = FALSE;
-
+       int haveGlobalColormap;
        gdImagePtr im = 0;
 
        /*1.4//imageNumber = 1; */
@@ -174,11 +174,13 @@
        screen_width = imw = LM_to_uint(buf[0],buf[1]);
        screen_height = imh = LM_to_uint(buf[2],buf[3]);
 
-       if (BitSet(buf[4], LOCALCOLORMAP)) {    /* Global Colormap */
+       haveGlobalColormap = BitSet(buf[4], LOCALCOLORMAP);    /* Global 
Colormap */
+       if (haveGlobalColormap) {
                if (ReadColorMap(fd, BitPixel, ColorMap)) {
                        return 0;
                }
        }
+
        for (;;) {
                int top, left;
                int width, height;
@@ -227,13 +229,18 @@
                        return 0;
                }
                im->interlace = BitSet(buf[8], INTERLACE);
-               if (! useGlobalColormap) {
+               if (!useGlobalColormap) {
                        if (ReadColorMap(fd, bitPixel, localColorMap)) { 
+                               gdImageDestroy(im);
                                return 0;
                        }
                        ReadImage(im, fd, width, height, localColorMap, 
                                        BitSet(buf[8], INTERLACE), 
&ZeroDataBlock);
                } else {
+                       if (!haveGlobalColormap) {
+                               gdImageDestroy(im);
+                               return 0;
+                       }
                        ReadImage(im, fd, width, height,
                                                ColorMap, 
                                                BitSet(buf[8], INTERLACE), 
&ZeroDataBlock);

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to