On 06/01/15 10:34, Kyle J. McKay wrote: > The N_ macro is used to mark strings for translation without > actually translating them. At runtime the string is expected > to be passed to the gettext API for translation. > > If two N_ macro invocations appear next to each other with only > whitespace (or nothing at all) between them, the two separate > strings will be marked for translation, but the preprocessor > will then combine the strings into one and at runtime the > string passed to gettext will not match the strings that were > translated. > > Avoid this by adding parentheses around the expansion of the > N_ macro so that instead of ending up with two adjacent strings > that are then combined by the preprocessor, two adjacent strings > surrounded by parentheses result instead which causes a compile > error so the mistake can be quickly found and corrected. > > Signed-off-by: Kyle J. McKay <mackyle@xxxxxxxxx> > --- > This patch is optional, but prevents the problem fixed by 1/2 > from recurring. > > gettext.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/gettext.h b/gettext.h > index 7671d09d..d11a4139 100644 > --- a/gettext.h > +++ b/gettext.h > @@ -63,6 +63,6 @@ const char *Q_(const char *msgid, const char *plu, unsigned long n) > } > > /* Mark msgid for translation but do not translate it. */ > -#define N_(msgid) msgid > +#define N_(msgid) (msgid) > > #endif > Hmm, see commit 642f85faa ("i18n: avoid parenthesized string as array initializer", 07-04-2011), for a counter-point. :-P ATB, Ramsay Jones -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html