From 04816adee5a20fcee1200ac7f51dc9fc54074ee5 Mon Sep 17 00:00:00 2001 From: Naoto Sato Date: Tue, 9 Oct 2012 09:59:05 -0700 Subject: [PATCH] 7200341: DateFormatSymbols.hashCode() throws ArrayIndexOutOfBoundsException in some circumstances Reviewed-by: okutsu --- .../classes/java/text/DateFormatSymbols.java | 36 +++++++++++++++--- .../DateFormatSymbolsProviderTest.java | 14 +++++++ .../DateFormatSymbolsProviderTest.sh | 2 +- .../java/util/PluggableLocale/fooprovider.jar | Bin 16789 -> 16866 bytes .../DateFormatSymbolsProviderImpl.java | 5 +++ 5 files changed, 51 insertions(+), 6 deletions(-) diff --git a/jdk/src/share/classes/java/text/DateFormatSymbols.java b/jdk/src/share/classes/java/text/DateFormatSymbols.java index 3e701b13799..ee688abd9b6 100644 --- a/jdk/src/share/classes/java/text/DateFormatSymbols.java +++ b/jdk/src/share/classes/java/text/DateFormatSymbols.java @@ -45,6 +45,7 @@ import java.lang.ref.SoftReference; import java.text.spi.DateFormatSymbolsProvider; import java.util.Arrays; import java.util.Locale; +import java.util.Objects; import java.util.ResourceBundle; import java.util.TimeZone; import java.util.concurrent.ConcurrentHashMap; @@ -366,6 +367,7 @@ public class DateFormatSymbols implements Serializable, Cloneable { */ public void setEras(String[] newEras) { eras = Arrays.copyOf(newEras, newEras.length); + cachedHashCode = 0; } /** @@ -393,6 +395,7 @@ public class DateFormatSymbols implements Serializable, Cloneable { */ public void setMonths(String[] newMonths) { months = Arrays.copyOf(newMonths, newMonths.length); + cachedHashCode = 0; } /** @@ -420,6 +423,7 @@ public class DateFormatSymbols implements Serializable, Cloneable { */ public void setShortMonths(String[] newShortMonths) { shortMonths = Arrays.copyOf(newShortMonths, newShortMonths.length); + cachedHashCode = 0; } /** @@ -439,6 +443,7 @@ public class DateFormatSymbols implements Serializable, Cloneable { */ public void setWeekdays(String[] newWeekdays) { weekdays = Arrays.copyOf(newWeekdays, newWeekdays.length); + cachedHashCode = 0; } /** @@ -458,6 +463,7 @@ public class DateFormatSymbols implements Serializable, Cloneable { */ public void setShortWeekdays(String[] newShortWeekdays) { shortWeekdays = Arrays.copyOf(newShortWeekdays, newShortWeekdays.length); + cachedHashCode = 0; } /** @@ -474,6 +480,7 @@ public class DateFormatSymbols implements Serializable, Cloneable { */ public void setAmPmStrings(String[] newAmpms) { ampms = Arrays.copyOf(newAmpms, newAmpms.length); + cachedHashCode = 0; } /** @@ -558,6 +565,7 @@ public class DateFormatSymbols implements Serializable, Cloneable { } zoneStrings = aCopy; isZoneStringsSet = true; + cachedHashCode = 0; } /** @@ -576,6 +584,7 @@ public class DateFormatSymbols implements Serializable, Cloneable { public void setLocalPatternChars(String newLocalPatternChars) { // Call toString() to throw an NPE in case the argument is null localPatternChars = newLocalPatternChars.toString(); + cachedHashCode = 0; } /** @@ -597,12 +606,23 @@ public class DateFormatSymbols implements Serializable, Cloneable { * Override hashCode. * Generates a hash code for the DateFormatSymbols object. */ + @Override public int hashCode() { - int hashcode = 0; - String[][] zoneStrings = getZoneStringsWrapper(); - for (int index = 0; index < zoneStrings[0].length; ++index) - hashcode ^= zoneStrings[0][index].hashCode(); - return hashcode; + int hashCode = cachedHashCode; + if (hashCode == 0) { + hashCode = 5; + hashCode = 11 * hashCode + Arrays.hashCode(eras); + hashCode = 11 * hashCode + Arrays.hashCode(months); + hashCode = 11 * hashCode + Arrays.hashCode(shortMonths); + hashCode = 11 * hashCode + Arrays.hashCode(weekdays); + hashCode = 11 * hashCode + Arrays.hashCode(shortWeekdays); + hashCode = 11 * hashCode + Arrays.hashCode(ampms); + hashCode = 11 * hashCode + Arrays.deepHashCode(getZoneStringsWrapper()); + hashCode = 11 * hashCode + Objects.hashCode(localPatternChars); + cachedHashCode = hashCode; + } + + return hashCode; } /** @@ -641,6 +661,11 @@ public class DateFormatSymbols implements Serializable, Cloneable { private transient int lastZoneIndex = 0; + /** + * Cached hash code + */ + transient volatile int cachedHashCode = 0; + private void initializeData(Locale desiredLocale) { locale = desiredLocale; @@ -782,6 +807,7 @@ public class DateFormatSymbols implements Serializable, Cloneable { dst.zoneStrings = null; } dst.localPatternChars = src.localPatternChars; + dst.cachedHashCode = 0; } /** diff --git a/jdk/test/java/util/PluggableLocale/DateFormatSymbolsProviderTest.java b/jdk/test/java/util/PluggableLocale/DateFormatSymbolsProviderTest.java index 20547219f53..44d537b25ca 100644 --- a/jdk/test/java/util/PluggableLocale/DateFormatSymbolsProviderTest.java +++ b/jdk/test/java/util/PluggableLocale/DateFormatSymbolsProviderTest.java @@ -44,6 +44,7 @@ public class DateFormatSymbolsProviderTest extends ProviderTest { DateFormatSymbolsProviderTest() { availableLocalesTest(); objectValidityTest(); + hashCodeTest(); } void availableLocalesTest() { @@ -124,4 +125,17 @@ public class DateFormatSymbolsProviderTest extends ProviderTest { } } } + + // Bug 7200341. + void hashCodeTest() { + for (Locale target: availloc) { + // look for provider's object + DateFormatSymbols dfs = DateFormatSymbols.getInstance(target); + if (dfs.getClass().getSimpleName().equals("FooDateFormatSymbols")) { + // call its hashCode(). success if no ArrayIndexOutOfBoundsException is thrown. + dfs.hashCode(); + break; + } + } + } } diff --git a/jdk/test/java/util/PluggableLocale/DateFormatSymbolsProviderTest.sh b/jdk/test/java/util/PluggableLocale/DateFormatSymbolsProviderTest.sh index 22c97d0a1ad..24129cd81d7 100644 --- a/jdk/test/java/util/PluggableLocale/DateFormatSymbolsProviderTest.sh +++ b/jdk/test/java/util/PluggableLocale/DateFormatSymbolsProviderTest.sh @@ -23,6 +23,6 @@ #!/bin/sh # # @test -# @bug 4052440 +# @bug 4052440 7200341 # @summary DateFormatSymbolsProvider tests # @run shell ExecTest.sh foo DateFormatSymbolsProviderTest true diff --git a/jdk/test/java/util/PluggableLocale/fooprovider.jar b/jdk/test/java/util/PluggableLocale/fooprovider.jar index c1b5723f9b95dad064ed0393dd878cd7d82f3c51..125dbe17756199ab64388fa372f656af7e74440d 100644 GIT binary patch delta 5263 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 Xm!zd3AUt0I{n^ERmU#K%=e_>{Yda@Y delta 5241 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 diff --git a/jdk/test/java/util/PluggableLocale/providersrc/DateFormatSymbolsProviderImpl.java b/jdk/test/java/util/PluggableLocale/providersrc/DateFormatSymbolsProviderImpl.java index 34a201afb87..5c96fb28f88 100644 --- a/jdk/test/java/util/PluggableLocale/providersrc/DateFormatSymbolsProviderImpl.java +++ b/jdk/test/java/util/PluggableLocale/providersrc/DateFormatSymbolsProviderImpl.java @@ -221,5 +221,10 @@ public class DateFormatSymbolsProviderImpl extends DateFormatSymbolsProvider { public void setAmPmStrings(String[] newAmpms) { ampms = newAmpms; } + + @Override + public String[][] getZoneStrings() { + return new String[0][0]; + } } }