Here's a proposed patch to fix a gnulib portability bug uncovered
with gzip 1.5.

---
 ChangeLog     |    9 +++++++++
 lib/gettext.h |    9 ++++++---
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index b27ef8d..7dacfb7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2012-07-11  Paul Eggert  <egg...@cs.ucla.edu>
+
+       gettext: do not assume '#define ... defined ...' behavior
+       * lib/gettext.h (_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS):
+       Do not use '#define FOO ... defined BAR ...', as the C standard says
+       it's not portable to expect that this works after macro expansion.
+       Problem reported for gzip by Steven M. Schweda in
+       <http://lists.gnu.org/archive/html/bug-gzip/2012-07/msg00000.html>.
+
 2012-07-10  Paul Eggert  <egg...@cs.ucla.edu>
 
        getloadavg: clean out old Emacs and Autoconf cruft
diff --git a/lib/gettext.h b/lib/gettext.h
index 1c5cab9..c63d907 100644
--- a/lib/gettext.h
+++ b/lib/gettext.h
@@ -183,9 +183,12 @@ npgettext_aux (const char *domain,
 
 #include <string.h>
 
-#define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS \
-  (((__GNUC__ >= 3 || __GNUG__ >= 2) && !defined __STRICT_ANSI__) \
-   /* || __STDC_VERSION__ >= 199901L */ )
+#if (((__GNUC__ >= 3 || __GNUG__ >= 2) && !defined __STRICT_ANSI__) \
+     /* || __STDC_VERSION__ >= 199901L */ )
+# define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS 1
+#else
+# define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS 0
+#endif
 
 #if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
 #include <stdlib.h>
-- 
1.7.6.5


Reply via email to