Looks good to me as well. Mike
On Jun 6 2012, at 07:47 , Remi Forax wrote: > Yes, looks good to me too. > > Cheers, > Rémi > > ----- Reply message ----- > From: "Chris Hegarty" <chris.hega...@oracle.com> > To: "Alan Bateman" <alan.bate...@oracle.com> > Cc: <core-libs-dev@openjdk.java.net> > Subject: [PATCH] 7164256 : EnumMap.clone doesn't clear the entrySet field, > keeping a reference to the original Map > Date: Wed, Jun 6, 2012 14:35 > > > On 06/06/2012 13:28, Alan Bateman wrote: >> >> This looks good to me and I'm happy to sponsor this. Does anyone else >> want to review this? > > The changes look fine to me too. > > -Chris. > >> >> -Alan >> >> >> On 29/05/2012 03:37, Diego Belfer wrote: >>> : >>> >>> # HG changeset patch >>> # User muralx >>> # Date 1338257674 10800 >>> # Node ID f61b94fd7aca738353177fcf3cc3972ddf36cf36 >>> # Parent 9b8c96f96a0f9a5801b55530a387fefbe50482a3 >>> PATCH 7164256 : EnumMap.clone does not clear the instance field entrySet >>> >>> diff --git a/src/share/classes/java/util/EnumMap.java >>> b/src/share/classes/java/util/EnumMap.java >>> --- a/src/share/classes/java/util/EnumMap.java >>> +++ b/src/share/classes/java/util/EnumMap.java >>> @@ -721,6 +721,7 @@ >>> throw new AssertionError(); >>> } >>> result.vals = result.vals.clone(); >>> + result.entrySet = null; >>> return result; >>> } >>> >>> diff --git a/test/java/util/EnumMap/ProperEntrySetOnClone.java >>> b/test/java/util/EnumMap/ProperEntrySetOnClone.java >>> new file mode 100644 >>> --- /dev/null >>> +++ b/test/java/util/EnumMap/ProperEntrySetOnClone.java >>> @@ -0,0 +1,58 @@ >>> +/* >>> + * Copyright (c) 2012, Oracle and/or its affiliates. All rights >>> reserved. >>> + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. >>> + * >>> + * This code is free software; you can redistribute it and/or modify it >>> + * under the terms of the GNU General Public License version 2 only, as >>> + * published by the Free Software Foundation. >>> + * >>> + * This code is distributed in the hope that it will be useful, but >>> WITHOUT >>> + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or >>> + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License >>> + * version 2 for more details (a copy is included in the LICENSE file >>> that >>> + * accompanied this code). >>> + * >>> + * You should have received a copy of the GNU General Public License >>> version >>> + * 2 along with this work; if not, write to the Free Software >>> Foundation, >>> + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. >>> + * >>> + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA >>> 94065 USA >>> + * or visit www.oracle.com <http://www.oracle.com> if you need >>> additional information or have any >>> + * questions. >>> + */ >>> + >>> +/* >>> + * @test >>> + * @bug 7164256 >>> + * @summary EnumMap.entrySet() returns an entrySet referencing to the >>> cloned instance >>> + * @author Diego Belfer >>> + */ >>> + >>> +import java.util.EnumMap; >>> + >>> +public class ProperEntrySetOnClone { >>> + public enum Test { >>> + ONE, TWO >>> + } >>> + >>> + public static void main(String[] args) { >>> + EnumMap<Test, String> map1 = new EnumMap<Test, String>(Test.class); >>> + map1.put(Test.ONE, "1"); >>> + map1.put(Test.TWO, "2"); >>> + >>> + // We need to force creation of the map1.entrySet >>> + int size = map1.entrySet().size(); >>> + if (size != 2) { >>> + throw new RuntimeException( >>> + "Invalid size in original map. Expected: 2 was: " + size); >>> + } >>> + >>> + EnumMap<Test, String> map2 = map1.clone(); >>> + map2.remove(Test.ONE); >>> + size = map2.entrySet().size(); >>> + if (size != 1) { >>> + throw new RuntimeException( >>> + "Invalid size in cloned instance. Expected: 1 was: " + size); >>> + } >>> + } >>> +} >>> >>