From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19412 invoked by alias); 16 Apr 2003 09:36:03 -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 19383 invoked by uid 71); 16 Apr 2003 09:36:02 -0000 Resent-Date: 16 Apr 2003 09:36:02 -0000 Resent-Message-ID: <20030416093602.19382.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org, java-prs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, vpuskas@eunet.yu Received: (qmail 17594 invoked by uid 48); 16 Apr 2003 09:28:54 -0000 Message-Id: <20030416092854.17593.qmail@sources.redhat.com> Date: Wed, 16 Apr 2003 09:36:00 -0000 From: vpuskas@eunet.yu Reply-To: vpuskas@eunet.yu To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: libgcj/10421: java.text.Collator.getInstance returns null for "de" locale X-SW-Source: 2003-04/txt/msg00751.txt.bz2 List-Id: >Number: 10421 >Category: libgcj >Synopsis: java.text.Collator.getInstance returns null for "de" locale >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Wed Apr 16 09:36:02 UTC 2003 >Closed-Date: >Last-Modified: >Originator: Vladimir Puskas >Release: 3.3 20030415 (prerelease) >Organization: >Environment: RedHat 8.0 & Slackware 8.0 >Description: Collator.getInstance returns null for "de" locale. Sample code throws NullPointerException, 'cause getInstance doesn't create Collator. Problem is in RuleBasedCollator constructor which doesn't handle '&' reset properly. The fix bellow solves the problem for me. I don't know if this could be related to PR 9613. >How-To-Repeat: /* TestCollator.java */ import java.text.Collator; import java.text.RuleBasedCollator; import java.util.Locale; class TestCollator { public static void main (String[]argv) throws Throwable { Collator c = Collator.getInstance (new Locale ("de")); printCompare (c, "stra\u00dfe", "stra\u00dfe"); printCompare (c, "M\u00fcnchen", "Muenchen"); c = new RuleBasedCollator ("Fix: --- gcc-cvs/libjava/java/text/RuleBasedCollator.java 2001-09-07 02:15:47.000000000 +0200 +++ gcc-local/libjava/java/text/RuleBasedCollator.java 2003-03-05 10:41:39.000000000 +0100 @@ -286,12 +286,24 @@ if (argument.length() == 0) throw new ParseException ("invalid character", save); String arg = argument.toString(); - int item_index = vec.indexOf(arg); + char arg_c = arg.charAt (0); + int item_index = -1; + boolean remove2 = false; + for (int i = vec.size () - 1; i > 0; --i ) { + RBCElement rbc = (RBCElement) vec.elementAt (i); + if (arg_c == rbc.key.charAt (0)) { + item_index = i; + if (arg.equals (rbc.key)&&(c == rbc.relation)) { + remove2 = true; + } + break; + } + } if (c != '&') { // If the argument already appears in the vector, then we // must remove it in order to re-order. - if (item_index != -1) + if ((item_index != -1)&&remove2) { vec.removeElementAt(item_index); if (insertion_index >= item_index) >Release-Note: >Audit-Trail: >Unformatted: