]> granicus.if.org Git - php/commitdiff
- remove libjpeg direct output and wrap them in php warnings
authorPierre Joye <pajoye@php.net>
Sat, 4 Feb 2006 14:56:58 +0000 (14:56 +0000)
committerPierre Joye <pajoye@php.net>
Sat, 4 Feb 2006 14:56:58 +0000 (14:56 +0000)
ext/gd/libgd/gd_jpeg.c

index b8aced826e6d5ed2023c579b413e06480feca15f..9573c1cf695687d00b0fca8a8b1cada96b2a0450 100644 (file)
@@ -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 */