From: Pierre Joye Date: Sat, 4 Feb 2006 14:56:58 +0000 (+0000) Subject: - remove libjpeg direct output and wrap them in php warnings X-Git-Tag: RELEASE_1_2~288 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ccaa5eaab22213c9d40434aca9d6ddb436682f38;p=php - remove libjpeg direct output and wrap them in php warnings --- diff --git a/ext/gd/libgd/gd_jpeg.c b/ext/gd/libgd/gd_jpeg.c index b8aced826e..9573c1cf69 100644 --- a/ext/gd/libgd/gd_jpeg.c +++ b/ext/gd/libgd/gd_jpeg.c @@ -43,11 +43,20 @@ static const char *const GD_JPEG_VERSION = "1.0"; typedef struct _jmpbuf_wrapper { jmp_buf jmpbuf; + int ignore_warning; } jmpbuf_wrapper; static long php_jpeg_emit_message(j_common_ptr jpeg_info, int level) { char message[JMSG_LENGTH_MAX]; + jmpbuf_wrapper *jmpbufw; + int ignore_warning = 0; + + jmpbufw = (jmpbuf_wrapper *) jpeg_info->client_data; + + if (jmpbufw != 0) { + ignore_warning = jmpbufw->ignore_warning; + } (jpeg_info->err->format_message)(jpeg_info,message); @@ -57,7 +66,7 @@ static long php_jpeg_emit_message(j_common_ptr jpeg_info, int level) * unless strace_level >= 3 */ if ((jpeg_info->err->num_warnings == 0) || (jpeg_info->err->trace_level >= 3)) { - php_gd_error_ex(E_NOTICE, "gd-jpeg, libjpeg: recoverable error: %s\n", message); + php_gd_error_ex(ignore_warning ? E_NOTICE : E_WARNING, "gd-jpeg, libjpeg: recoverable error: %s\n", message); } jpeg_info->err->num_warnings++; @@ -281,12 +290,12 @@ gdImagePtr gdImageCreateFromJpegCtx (gdIOCtx * infile, int ignore_warning) memset (&cinfo, 0, sizeof (cinfo)); memset (&jerr, 0, sizeof (jerr)); + jmpbufw.ignore_warning = ignore_warning; + cinfo.err = jpeg_std_error (&jerr); cinfo.client_data = &jmpbufw; - if (ignore_warning) { - cinfo.err->emit_message = (void (*)(j_common_ptr,int)) php_jpeg_emit_message; - } + cinfo.err->emit_message = (void (*)(j_common_ptr,int)) php_jpeg_emit_message; if (setjmp (jmpbufw.jmpbuf) != 0) { /* we're here courtesy of longjmp */