From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18586 invoked by alias); 23 Jul 2007 08:02:25 -0000 Received: (qmail 18568 invoked by uid 48); 23 Jul 2007 08:02:24 -0000 Date: Mon, 23 Jul 2007 08:02:00 -0000 Subject: [Bug java/32862] New: bug in EnumMap implementation X-Bugzilla-Reason: CC Message-ID: Reply-To: gcc-bugzilla@gcc.gnu.org To: java-prs@gcc.gnu.org From: "debian-gcc at lists dot debian dot org" Mailing-List: contact java-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: java-prs-owner@gcc.gnu.org X-SW-Source: 2007-q3/txt/msg00057.txt.bz2 [forwarded from http://bugs.debian.org/423160] seen with trunk 20070720 The gij implementation of EnumMap class contains a flaw: it returns strange java.lang.Object classes for missing elements. The error can be demonstrated with this program: === Cut === import java.util.*; public class Test { enum TestEnum { FIRST, SECOND } public static void main(String[] args) { Map map = new EnumMap(TestEnum.class); map.put(TestEnum.FIRST, "first"); System.out.println(map); System.out.println(map.containsKey(TestEnum.SECOND)); System.out.println(map.get(TestEnum.SECOND)); } } $ gcj -C Test.java tmp $ gij Test {FIRST=first} false Exception in thread "main" java.lang.ClassCastException: java.lang.Object cannot be cast to java.lang.String at Test.main(Test.java:13) tmp $ java Test {FIRST=first} false null === Cut === As you can see, Sun Java (the last call) returns correct null, while GNU libgcj returns bogus java.lang.Object. -- Summary: bug in EnumMap implementation Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: java AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: debian-gcc at lists dot debian dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32862