From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17856 invoked by alias); 21 Jun 2002 01:56:04 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 17803 invoked by uid 71); 21 Jun 2002 01:56:01 -0000 Date: Thu, 20 Jun 2002 20:06:00 -0000 Message-ID: <20020621015601.17801.qmail@sources.redhat.com> To: nobody@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org, From: Zack Weinberg Subject: Re: c++/7084: locale dependant ICE Reply-To: Zack Weinberg X-SW-Source: 2002-06/txt/msg00511.txt.bz2 List-Id: 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