]> git.eshelyaron.com Git - emacs.git/commitdiff
Improve fix for jpeglib build break
authorDaniel Colascione <dancol@dancol.org>
Mon, 8 Oct 2012 10:26:10 +0000 (02:26 -0800)
committerDaniel Colascione <dancol@dancol.org>
Mon, 8 Oct 2012 10:26:10 +0000 (02:26 -0800)
src/ChangeLog
src/image.c

index 250024ba6c52ad58cd93bccbd6e06d5c6a3a196a..f9a47ebb4b6366d403f4670700c5f3a0f4e3af98 100644 (file)
@@ -1,3 +1,8 @@
+2012-10-08  Daniel Colascione  <dancol@dancol.org>
+
+       * image.c: Permanent fix for JPEG compilation issue --- limit
+       jpeglib `boolean' redefinition to Cygwin builds.
+
 2012-10-08  Eli Zaretskii  <eliz@gnu.org>
 
        * image.c (CHECK_LIB_AVAILABLE): Remove, no longer used.
index 790ede4c35e7d765d63c5c1d0a38ce60afd4ca83..6058bdf444c10d1c01c17ce96869a0650e215db8 100644 (file)
@@ -6061,21 +6061,26 @@ jpeg_image_p (Lisp_Object object)
 #define __WIN32__ 1
 #endif
 
-#if 0  /* FIXME */
-/* Work around conflict between jpeg boolean and rpcndr.h
-   under Windows. */
+/* rpcndr.h (via windows.h) and jpeglib.h both define boolean types.
+   Some versions of jpeglib try to detect whether rpcndr.h is loaded,
+   using the Windows boolean type instead of the jpeglib boolean type
+   if so.  Cygwin jpeglib, however, doesn't try to detect whether its
+   headers are included along with windows.h, so under Cygwin, jpeglib
+   attempts to define a conflicting boolean type.  Worse, forcing
+   Cygwin jpeglib headers to use the Windows boolean type doesn't work
+   because it created an ABI incompatibility between the
+   already-compiled jpeg library and the header interface definition.
+
+   The best we can do is to define jpeglib's boolean type to a
+   different name.  This name, jpeg_boolean, remains in effect through
+   the rest of image.c.
+*/
+#if defined (CYGWIN) && defined (HAVE_NTGUI)
 #define boolean jpeg_boolean
 #endif
 #include <jpeglib.h>
 #include <jerror.h>
 
-/* Don't undefine boolean --- use the JPEG boolean
-   through the rest of the file. */
-
-#ifdef HAVE_STLIB_H_1
-#define HAVE_STDLIB_H 1
-#endif
-
 #ifdef WINDOWSNT
 
 /* JPEG library details.  */