[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] emacs-26 b38724a: Work around ImageMagick bug 825
From: |
Paul Eggert |
Subject: |
[Emacs-diffs] emacs-26 b38724a: Work around ImageMagick bug 825 |
Date: |
Tue, 17 Oct 2017 02:45:37 -0400 (EDT) |
branch: emacs-26
commit b38724ab675ac02dec865930a35abd8e06ee8e76
Author: Paul Eggert <address@hidden>
Commit: Paul Eggert <address@hidden>
Work around ImageMagick bug 825
This should fix several bugs reported recently against Emacs
(Bug#28518, Bug#28626, Bug#28632, Bug#28633, Bug#28770).
* src/image.c (imagemagick_load_image):
Do not call MagickWandTerminus.
---
src/image.c | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/src/image.c b/src/image.c
index 335a43e..c1c1671 100644
--- a/src/image.c
+++ b/src/image.c
@@ -8552,13 +8552,19 @@ imagemagick_load_image (struct frame *f, struct image
*img,
char hint_buffer[MaxTextExtent];
char *filename_hint = NULL;
+ /* Initialize the ImageMagick environment. */
+ static bool imagemagick_initialized;
+ if (!imagemagick_initialized)
+ {
+ imagemagick_initialized = true;
+ MagickWandGenesis ();
+ }
+
/* Handle image index for image types who can contain more than one image.
Interface :index is same as for GIF. First we "ping" the image to see how
many sub-images it contains. Pinging is faster than loading the image to
find out things about it. */
- /* Initialize the imagemagick environment. */
- MagickWandGenesis ();
image = image_spec_value (img->spec, QCindex, NULL);
ino = INTEGERP (image) ? XFASTINT (image) : 0;
image_wand = NewMagickWand ();
@@ -8859,8 +8865,10 @@ imagemagick_load_image (struct frame *f, struct image
*img,
DestroyMagickWand (image_wand);
if (bg_wand) DestroyPixelWand (bg_wand);
- /* `MagickWandTerminus' terminates the imagemagick environment. */
- MagickWandTerminus ();
+ /* Do not call MagickWandTerminus, to work around ImageMagick bug 825. See:
+ https://github.com/ImageMagick/ImageMagick/issues/825
+ Although this bug was introduced in ImageMagick 6.9.9-14 and
+ fixed in 6.9.9-18, it's simpler to work around it in all versions. */
return 1;
@@ -8868,7 +8876,6 @@ imagemagick_load_image (struct frame *f, struct image
*img,
DestroyMagickWand (image_wand);
if (bg_wand) DestroyPixelWand (bg_wand);
- MagickWandTerminus ();
/* TODO more cleanup. */
image_error ("Error parsing IMAGEMAGICK image `%s'", img->spec);
return 0;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] emacs-26 b38724a: Work around ImageMagick bug 825,
Paul Eggert <=