cvs: gd(GD_2_0) /libgd/src gd_png.c
[email protected] ("Takeshi Abe") Tue, 31 Mar 2009 16:26:36 -0000
| Newsgroups | php.gd.cvs |
|---|---|
| Message-ID | <cvstabe1238516796@cvsserver> |
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);