From 5f0cb45a6f6af1dea4d41f5da86fc3e36828c6d0 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Wed, 12 Sep 2012 18:22:08 -0700 Subject: [PATCH] Work around GCC and GNOME bugs when --enable-gcc-warnings. * emacsgtkfixed.c (G_STATIC_ASSERT): Redefine to use 'verify', to work around GNOME bug 683906. * image.c (jpeg_load_body) [HAVE_JPEG && lint]: Pacify gcc -Wclobber. (struct my_jpeg_error_mgr) [HAVE_JPEG && lint]: New member fp. This works around GCC bug 54561. --- src/ChangeLog | 9 +++++++++ src/emacsgtkfixed.c | 5 +++++ src/image.c | 8 ++++++++ 3 files changed, 22 insertions(+) diff --git a/src/ChangeLog b/src/ChangeLog index c0d3316bea1..29e8ea4232e 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,12 @@ +2012-09-13 Paul Eggert + + Work around GCC and GNOME bugs when --enable-gcc-warnings. + * emacsgtkfixed.c (G_STATIC_ASSERT): Redefine to use 'verify', + to work around GNOME bug 683906. + * image.c (jpeg_load_body) [HAVE_JPEG && lint]: Pacify gcc -Wclobber. + (struct my_jpeg_error_mgr) [HAVE_JPEG && lint]: New member fp. + This works around GCC bug 54561. + 2012-09-12 Paul Eggert More fixes for 'volatile' and setjmp/longjmp. diff --git a/src/emacsgtkfixed.c b/src/emacsgtkfixed.c index 940482654b3..a21d0f8a422 100644 --- a/src/emacsgtkfixed.c +++ b/src/emacsgtkfixed.c @@ -27,6 +27,11 @@ along with GNU Emacs. If not, see . */ #include "frame.h" #include "xterm.h" +/* Silence a bogus diagnostic; see GNOME bug 683906. */ +#include +#undef G_STATIC_ASSERT +#define G_STATIC_ASSERT(x) verify (x) + #define EMACS_TYPE_FIXED emacs_fixed_get_type () #define EMACS_FIXED(obj) \ G_TYPE_CHECK_INSTANCE_CAST (obj, EMACS_TYPE_FIXED, EmacsFixed) diff --git a/src/image.c b/src/image.c index cd5df99ef57..d4e54fb7dcd 100644 --- a/src/image.c +++ b/src/image.c @@ -6140,6 +6140,9 @@ struct my_jpeg_error_mgr MY_JPEG_INVALID_IMAGE_SIZE, MY_JPEG_CANNOT_CREATE_X } failure_code; +#ifdef lint + FILE *fp; +#endif }; @@ -6392,6 +6395,8 @@ jpeg_load_body (struct frame *f, struct image *img, return 0; } + IF_LINT (mgr->fp = fp); + /* Customize libjpeg's error handling to call my_error_exit when an error is detected. This function will perform a longjmp. */ mgr->cinfo.err = fn_jpeg_std_error (&mgr->pub); @@ -6430,6 +6435,9 @@ jpeg_load_body (struct frame *f, struct image *img, return 0; } + /* Silence a bogus diagnostic; see GCC bug 54561. */ + IF_LINT (fp = mgr->fp); + /* Create the JPEG decompression object. Let it read from fp. Read the JPEG image header. */ fn_jpeg_CreateDecompress (&mgr->cinfo, JPEG_LIB_VERSION, sizeof *&mgr->cinfo); -- 2.39.2