emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r106682: * src/image.c (imagemagick_e


From: Juri Linkov
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r106682: * src/image.c (imagemagick_error): New function.
Date: Fri, 16 Dec 2011 01:28:56 +0200
User-agent: Bazaar (2.3.1)

------------------------------------------------------------
revno: 106682
fixes bug(s): http://debbugs.gnu.org/10112
committer: Juri Linkov <address@hidden>
branch nick: trunk
timestamp: Fri 2011-12-16 01:28:56 +0200
message:
  * src/image.c (imagemagick_error): New function. 
  (imagemagick_load_image): Comment out `MagickSetResolution' call.
  Use `imagemagick_error' where ImageMagick functions return
  `MagickFalse'.
  (Fimagemagick_types): Add `Fnreverse' to return the list in the
  proper order.
modified:
  src/ChangeLog
  src/image.c
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2011-12-15 02:12:08 +0000
+++ b/src/ChangeLog     2011-12-15 23:28:56 +0000
@@ -1,3 +1,12 @@
+2011-12-15  Juri Linkov  <address@hidden>
+
+       * image.c (imagemagick_error): New function.  (Bug#10112)
+       (imagemagick_load_image): Comment out `MagickSetResolution' call.
+       Use `imagemagick_error' where ImageMagick functions return
+       `MagickFalse'.
+       (Fimagemagick_types): Add `Fnreverse' to return the list in the
+       proper order.
+
 2011-12-15  YAMAMOTO Mitsuharu  <address@hidden>
 
        * xftfont.c (xftfont_draw): Use the font metrics of s->font to

=== modified file 'src/image.c'
--- a/src/image.c       2011-11-24 19:02:39 +0000
+++ b/src/image.c       2011-12-15 23:28:56 +0000
@@ -7564,6 +7564,22 @@
                                            MagickPixelPacket *);
 #endif
 
+/* Log ImageMagick error message.
+   Useful when a ImageMagick function returns the status `MagickFalse'.  */
+
+static void
+imagemagick_error (MagickWand *wand)
+{
+  char *description;
+  ExceptionType severity;
+
+  description = MagickGetException (wand, &severity);
+  image_error ("ImageMagick error: %s",
+              make_string (description, strlen (description)),
+              Qnil);
+  description = (char *) MagickRelinquishMemory (description);
+}
+
 /* Helper function for imagemagick_load, which does the actual loading
    given contents and size, apart from frame and image structures,
    passed from imagemagick_load.  Uses librimagemagick to do most of
@@ -7618,6 +7634,7 @@
   image = image_spec_value (img->spec, QCindex, NULL);
   ino = INTEGERP (image) ? XFASTINT (image) : 0;
   ping_wand = NewMagickWand ();
+  /* MagickSetResolution (ping_wand, 2, 2);   (Bug#10112)  */
 
   if (filename != NULL)
     {
@@ -7628,7 +7645,12 @@
       status = MagickPingImageBlob (ping_wand, contents, size);
     }
 
-  MagickSetResolution (ping_wand, 2, 2);
+  if (status == MagickFalse)
+    {
+      imagemagick_error (ping_wand);
+      DestroyMagickWand (ping_wand);
+      return 0;
+    }
 
   if (! (0 <= ino && ino < MagickGetNumberImages (ping_wand)))
     {
@@ -7669,7 +7691,10 @@
     {
       image_wand = NewMagickWand ();
       if (MagickReadImageBlob (image_wand, contents, size) == MagickFalse)
-       goto imagemagick_error;
+       {
+         imagemagick_error (image_wand);
+         goto imagemagick_error;
+       }
     }
 
   /* If width and/or height is set in the display spec assume we want
@@ -7697,6 +7722,7 @@
       if (status == MagickFalse)
        {
          image_error ("Imagemagick scale failed", Qnil, Qnil);
+         imagemagick_error (image_wand);
          goto imagemagick_error;
        }
     }
@@ -7751,6 +7777,7 @@
       if (status == MagickFalse)
         {
           image_error ("Imagemagick image rotate failed", Qnil, Qnil);
+         imagemagick_error (image_wand);
           goto imagemagick_error;
         }
     }
@@ -7975,7 +8002,7 @@
       Qimagemagicktype = intern (imtypes[i]);
       typelist = Fcons (Qimagemagicktype, typelist);
     }
-  return typelist;
+  return Fnreverse (typelist);
 }
 
 #endif /* defined (HAVE_IMAGEMAGICK) */


reply via email to

[Prev in Thread] Current Thread [Next in Thread]