summaryrefslogtreecommitdiff
blob: 6c6d6ba4ca8a5849cddc36f99f3a25f4c084c624 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
Support ImageMagick version 7.
https://bugs.gentoo.org/665058
https://debbugs.gnu.org/25967

This backports and consolidates the following commits from upstream git:

commit 3cc42bb60099c32f64e57d2ee33c8321adba7942
Author: Glenn Morris <rgm@gnu.org>
Date:   Thu Aug 30 13:56:08 2018 -0400

    * configure.ac: Fix goofs in my recent ImageMagick change.

commit 42ed35c68b7c199aa797e655fdc3547c5c3087d2
Author: Paul Eggert <eggert@cs.ucla.edu>
Date:   Thu Aug 30 10:03:43 2018 -0700

    Pacify -Wdouble-promotion in ImageMagick code

commit bf1b147b55e1328efca6e40181e79dd9a369895d
Author: Glenn Morris <rgm@gnu.org>
Date:   Mon Aug 27 22:03:25 2018 -0400

    * configure.ac, src/image.c: Tweak previous ImageMagick change.

commit 5729486951e6a60db55ea17ee3bac9baf8b54f6a
Author: Karl Otness <karl@karlotness.com>
Date:   Mon Aug 27 21:57:44 2018 -0400

    Support ImageMagick version 7 (bug#25967)

commit 686b520ff9ae25f9fa293a92e65b9331e192d142
Author: Andreas Schwab <schwab@linux-m68k.org>
Date:   Sun Jul 10 20:18:44 2016 +0200

    Fix memory leak in imagemagick-types

--- emacs-24.3-orig/configure.ac
+++ emacs-24.3/configure.ac
@@ -1846,11 +1846,14 @@
 HAVE_IMAGEMAGICK=no
 if test "${HAVE_X11}" = "yes"; then
   if test "${with_imagemagick}" != "no"; then
-    ## 6.2.8 is the earliest version known to work, but earlier versions
-    ## might work - let us know if you find one.
-    ## 6.0.7 does not work.  See bug#7955.
-    IMAGEMAGICK_MODULE="Wand >= 6.2.8"
-    PKG_CHECK_MODULES(IMAGEMAGICK, $IMAGEMAGICK_MODULE, HAVE_IMAGEMAGICK=yes, :)
+    PKG_CHECK_MODULES(IMAGEMAGICK, MagickWand >= 7, HAVE_IMAGEMAGICK=yes, :)
+    if test $HAVE_IMAGEMAGICK = yes; then
+       AC_DEFINE([HAVE_IMAGEMAGICK7], 1, [Define to 1 if using ImageMagick7.])
+    else
+       ## 6.3.5 is the earliest version known to work; see Bug#17339.
+       ## 6.8.2 makes Emacs crash; see Bug#13867.
+       PKG_CHECK_MODULES(IMAGEMAGICK, Wand >= 6.3.5 Wand != 6.8.2, HAVE_IMAGEMAGICK=yes, :)
+    fi
     AC_SUBST(IMAGEMAGICK_CFLAGS)
     AC_SUBST(IMAGEMAGICK_LIBS)
 
--- emacs-24.3-orig/src/image.c
+++ emacs-24.3/src/image.c
@@ -7620,11 +7620,20 @@
 /* The GIF library also defines DrawRectangle, but its never used in Emacs.
    Therefore rename the function so it doesn't collide with ImageMagick.  */
 #define DrawRectangle DrawRectangleGif
-#include <wand/MagickWand.h>
+
+#ifdef HAVE_IMAGEMAGICK7
+# include <MagickWand/MagickWand.h>
+# include <MagickCore/version.h>
+/* ImageMagick 7 compatibility definitions.  */
+# define PixelSetMagickColor PixelSetPixelColor
+typedef PixelInfo MagickPixelPacket;
+#else
+# include <wand/MagickWand.h>
+# include <magick/version.h>
+#endif
 
 /* ImageMagick 6.5.3 through 6.6.5 hid PixelGetMagickColor for some reason.
    Emacs seems to work fine with the hidden version, so unhide it.  */
-#include <magick/version.h>
 #if 0x653 <= MagickLibVersion && MagickLibVersion <= 0x665
 extern WandExport void PixelGetMagickColor (const PixelWand *,
 					    MagickPixelPacket *);
@@ -8053,14 +8062,14 @@
 {
   Lisp_Object typelist = Qnil;
   size_t numf = 0;
-  ExceptionInfo ex;
+  ExceptionInfo *ex;
   char **imtypes;
   size_t i;
   Lisp_Object Qimagemagicktype;
 
-  GetExceptionInfo(&ex);
-  imtypes = GetMagickList ("*", &numf, &ex);
-  DestroyExceptionInfo(&ex);
+  ex = AcquireExceptionInfo ();
+  imtypes = GetMagickList ("*", &numf, ex);
+  DestroyExceptionInfo (ex);
 
   for (i = 0; i < numf; i++)
     {