Author: spouliot
Date: 2007-03-23 09:21:10 -0500 (Fri, 23 Mar 2007)
New Revision: 74872

Modified:
   trunk/libgdiplus/src/ChangeLog
   trunk/libgdiplus/src/jpegcodec.c
Log:
2007-03-23  Sebastien Pouliot  <[EMAIL PROTECTED]> 
        * jpegcodec.c: Re-enable sigsetjmp to handle malformed JPEG files.
        Also don't try to load EXIF data if loading failed. Fix bug #80980.


Modified: trunk/libgdiplus/src/ChangeLog
===================================================================
--- trunk/libgdiplus/src/ChangeLog      2007-03-23 14:04:02 UTC (rev 74871)
+++ trunk/libgdiplus/src/ChangeLog      2007-03-23 14:21:10 UTC (rev 74872)
@@ -1,5 +1,7 @@
-2007-03-23  Sebastien Pouliot  <[EMAIL PROTECTED]>
+2007-03-23  Sebastien Pouliot  <[EMAIL PROTECTED]> 
 
+       * jpegcodec.c: Re-enable sigsetjmp to handle malformed JPEG files.
+       Also don't try to load EXIF data if loading failed. Fix bug #80980.
        * metafile.c: More endian fixes (EMF headers)
 
 2007-03-22  Sebastien Pouliot  <[EMAIL PROTECTED]>

Modified: trunk/libgdiplus/src/jpegcodec.c
===================================================================
--- trunk/libgdiplus/src/jpegcodec.c    2007-03-23 14:04:02 UTC (rev 74871)
+++ trunk/libgdiplus/src/jpegcodec.c    2007-03-23 14:21:10 UTC (rev 74872)
@@ -124,7 +124,7 @@
 static void
 _gdip_jpeg_error_exit (j_common_ptr cinfo)
 {
-       /*gdip_jpeg_error_mgr_ptr err = (gdip_jpeg_error_mgr_ptr) cinfo->err;*/
+       gdip_jpeg_error_mgr_ptr err = (gdip_jpeg_error_mgr_ptr) cinfo->err;
        char buffer[JMSG_LENGTH_MAX];
 
        (* cinfo->err->format_message) (cinfo, buffer);
@@ -136,10 +136,9 @@
         * what's going on here.
         * -- FIXME
         */
-#if 0
-       printf ("jpeg error: %d %s\n", err->parent.msg_code, buffer);
+
+       g_warning ("jpeg error: %d %s\n", err->parent.msg_code, buffer);
        siglongjmp (err->setjmp_buffer, 1);
-#endif
 }
 
 static void
@@ -496,8 +495,6 @@
        return Ok;
 
 error:
-       jpeg_destroy_decompress (&cinfo);
-
        /* coverity[dead_error_line] */
        if (destbuf != NULL) {
                GdipFree (destbuf);
@@ -580,7 +577,9 @@
        GdipFree (src->buf);
        GdipFree (src);
 #ifdef HAVE_LIBEXIF
-       load_exif_data (exif_data_new_from_file (filename), *image);
+       if (st == Ok) {
+               load_exif_data (exif_data_new_from_file (filename), *image);
+       }
 #endif
 
        return st;

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to