aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkahrl <kahrl@gmx.net>2016-08-21 02:40:23 +0200
committerest31 <est31@users.noreply.github.com>2016-08-21 02:40:23 +0200
commitcafa400fa5077e7cb9c627d79482941cb82a81cf (patch)
tree0da784f4389ecb42104b157fb423e11795d701be
parentf092dac9793b80c29a669b0d676ee3e4f55f682e (diff)
downloadminetest-cafa400fa5077e7cb9c627d79482941cb82a81cf.tar.gz
minetest-cafa400fa5077e7cb9c627d79482941cb82a81cf.tar.bz2
minetest-cafa400fa5077e7cb9c627d79482941cb82a81cf.zip
gettext.h: include <locale> before defining the gettext macro (#4452)
Fixes #4446: a syntax error that happens if something else (such as <iomanip> or <locale> in certain libstdc++ versions) includes <libintl.h> 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.
-rw-r--r--src/gettext.h10
1 files changed, 10 insertions, 0 deletions
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 <libintl.h>
#else
+ // In certain environments, some standard headers like <iomanip>
+ // and <locale> 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 <locale>
+
#define gettext(String) String
#endif