From cafa400fa5077e7cb9c627d79482941cb82a81cf Mon Sep 17 00:00:00 2001 From: kahrl Date: Sun, 21 Aug 2016 02:40:23 +0200 Subject: [PATCH] gettext.h: include before defining the gettext macro (#4452) Fixes #4446: a syntax error that happens if something else (such as or in certain libstdc++ versions) includes later, which contains a function declaration for gettext that gets mangled by the macro. See the added comment in gettext.h and the discussion in #4446/#4452 for details. --- src/gettext.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/gettext.h b/src/gettext.h index b8d27f77c..885d7ca2d 100644 --- a/src/gettext.h +++ b/src/gettext.h @@ -25,6 +25,16 @@ with this program; if not, write to the Free Software Foundation, Inc., #if USE_GETTEXT #include #else + // In certain environments, some standard headers like + // and include libintl.h. If libintl.h is included after + // we define our gettext macro below, this causes a syntax error + // at the declaration of the gettext function in libintl.h. + // Fix this by including such a header before defining the macro. + // See issue #4446. + // Note that we can't include libintl.h directly since we're in + // the USE_GETTEXT=0 case and can't assume that gettext is installed. + #include + #define gettext(String) String #endif