The following reply was made to PR c++/7084; it has been noted by GNATS. From: Zack Weinberg To: fasbjx@free.fr Cc: gcc-bugs@gcc.gnu.org, gcc-gnats@gcc.gnu.org, debian-gcc@lists.debian.org Subject: Re: c++/7084: locale dependant ICE Date: Thu, 20 Jun 2002 18:48:39 -0700 On Fri, Jun 21, 2002 at 12:49:25PM +0200, fasbjx@free.fr wrote: > - with my default locale, fr_FR.ISO8859-1, GCC says: > tmp.cc: Dans function « int main() »: > tmp.cc:511: no match pour l'opérateur « > erreur interne de compilateur: erreur pour rapporter une routine ré-entée This would be a bug in fr.po: | #: cp/call.c:2834 | msgid "%s for `%T %s' operator" | msgstr "%s pour l'opérateur «%T %s»" | | #: cp/call.c:2837 | msgid "%s for `%T [%T]' operator" | msgstr "%s pour l'opérateur «%T [%T]»" | | #: cp/call.c:2842 | msgid "%s for `%T %s %T' operator" | msgstr "%s pour l'opérateur «%t [%T]»" | | #: cp/call.c:2845 | msgid "%s for `%s %T' operator" | msgstr "%s pour l'opérateur «%t [%T]»" You will notice that the translations do not match the messages, and that the escape sequences are wrong: in particular, a %t has appeared. This is not a defined %-escape, so we abort in the middle of generating the error message, which triggers the "ré-entée" message. Correct entries, presumably, would read | #: cp/call.c:2834 | msgid "%s for `%T %s' operator" | msgstr "%s pour l'opérateur «%T %s»" | | #: cp/call.c:2837 | msgid "%s for `%T [%T]' operator" | msgstr "%s pour l'opérateur «%T [%T]»" | | #: cp/call.c:2842 | msgid "%s for `%T %s %T' operator" | msgstr "%s pour l'opérateur «%T %s %T»" | | #: cp/call.c:2845 | msgid "%s for `%s %T' operator" | msgstr "%s pour l'opérateur «%s %T»" I am not sure what the protocol is for fixing such bugs. The corrections need to make it back to the translation project somehow, and the .po files need to be audited for other occurrences of this problem (why didn't msgfmt bitch?) zw