cvs: gd(GD_2_0) /libgd/src gd_png.c

From: Date: Tue, 31 Mar 2009 16:26:36 +0000
Subject: cvs: gd(GD_2_0) /libgd/src gd_png.c
Groups: php.gd.cvs 
Request: Send a blank email to php-gd-cvs+get-600@lists.php.net to get a copy of this message
tabe Tue Mar 31 16:26:36 2009 UTC Modified files: (Branch: GD_2_0) /gd/libgd/src gd_png.c Log: MFH: replaced static gdPngJmpbufStruct, which is afraid of being shared with several threads, by a couple of auto variables. http://cvs.php.net/viewvc.cgi/gd/libgd/src/gd_png.c?r1=1.21.2.7&r2=1.21.2.8&diff_format=u Index: gd/libgd/src/gd_png.c diff -u gd/libgd/src/gd_png.c:1.21.2.7 gd/libgd/src/gd_png.c:1.21.2.8 --- gd/libgd/src/gd_png.c:1.21.2.7 Sat Mar 14 04:58:24 2009 +++ gd/libgd/src/gd_png.c Tue Mar 31 16:26:36 2009 @@ -1,4 +1,4 @@ -/* $Id: gd_png.c,v 1.21.2.7 2009/03/14 04:58:24 tabe Exp $ */ +/* $Id: gd_png.c,v 1.21.2.8 2009/03/31 16:26:36 tabe Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" #endif @@ -41,15 +41,13 @@ ---------------------------------------------------------------------------*/ -#ifndef PNG_SETJMP_NOT_SUPPORTED +#ifdef PNG_SETJMP_SUPPORTED typedef struct _jmpbuf_wrapper { jmp_buf jmpbuf; } jmpbuf_wrapper; -static jmpbuf_wrapper gdPngJmpbufStruct; - static void gdPngErrorHandler (png_structp png_ptr, png_const_charp msg) { @@ -125,6 +123,9 @@ BGD_DECLARE(gdImagePtr) gdImageCreateFromPngCtx (gdIOCtx * infile) { png_byte sig[8]; +#ifdef PNG_SETJMP_SUPPORTED + jmpbuf_wrapper jbw; +#endif png_structp png_ptr; png_infop info_ptr; png_uint_32 width, height, rowbytes, w, h; @@ -155,8 +156,8 @@ return NULL; /* bad signature */ } -#ifndef PNG_SETJMP_NOT_SUPPORTED - png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING, &gdPngJmpbufStruct, gdPngErrorHandler, NULL); +#ifdef PNG_SETJMP_SUPPORTED + png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING, &jbw, gdPngErrorHandler, NULL); #else png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); #endif @@ -180,8 +181,8 @@ /* setjmp() must be called in every non-callback function that calls a * PNG-reading libpng function */ -#ifndef PNG_SETJMP_NOT_SUPPORTED - if (setjmp (gdPngJmpbufStruct.jmpbuf)) { +#ifdef PNG_SETJMP_SUPPORTED + if (setjmp(jbw.jmpbuf)) { fprintf (stderr, "gd-png error: setjmp returns error condition 1\n"); png_destroy_read_struct (&png_ptr, &info_ptr, NULL); @@ -205,8 +206,6 @@ if (im == NULL) { fprintf (stderr, "gd-png error: cannot allocate gdImage struct\n"); png_destroy_read_struct (&png_ptr, &info_ptr, NULL); - gdFree (image_data); - gdFree (row_pointers); return NULL; } @@ -220,8 +219,8 @@ /* setjmp() must be called in every non-callback function that calls a * PNG-reading libpng function */ -#ifndef PNG_SETJMP_NOT_SUPPORTED - if (setjmp(gdPngJmpbufStruct.jmpbuf)) { +#ifdef PNG_SETJMP_SUPPORTED + if (setjmp(jbw.jmpbuf)) { fprintf(stderr, "gd-png error: setjmp returns error condition 2\n"); png_destroy_read_struct(&png_ptr, &info_ptr, NULL); gdFree(image_data); @@ -511,10 +510,11 @@ png_infop info_ptr; volatile int transparent = im->transparent; volatile int remap = FALSE; +#ifdef PNG_SETJMP_SUPPORTED + jmpbuf_wrapper jbw; -#ifndef PNG_SETJMP_NOT_SUPPORTED png_ptr = png_create_write_struct (PNG_LIBPNG_VER_STRING, - &gdPngJmpbufStruct, gdPngErrorHandler, + &jbw, gdPngErrorHandler, NULL); #else png_ptr = png_create_write_struct (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); @@ -533,8 +533,8 @@ return; } -#ifndef PNG_SETJMP_NOT_SUPPORTED - if (setjmp (gdPngJmpbufStruct.jmpbuf)) +#ifdef PNG_SETJMP_SUPPORTED + if (setjmp(jbw.jmpbuf)) { fprintf (stderr, "gd-png error: setjmp returns error condition\n"); png_destroy_write_struct (&png_ptr, &info_ptr);

« previous php.gd.cvs (#600) next »