Index: java/text/DecimalFormatSymbols.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/text/DecimalFormatSymbols.java,v retrieving revision 1.15 diff -u -3 -p -u -r1.15 DecimalFormatSymbols.java --- java/text/DecimalFormatSymbols.java 30 Dec 2004 19:37:31 -0000 1.15 +++ java/text/DecimalFormatSymbols.java 11 Jan 2005 15:31:38 -0000 @@ -139,6 +139,10 @@ public final class DecimalFormatSymbols public DecimalFormatSymbols (Locale loc) { ResourceBundle res; + + currency = null; + currencySymbol = ""; + intlCurrencySymbol = ""; try { res = ResourceBundle.getBundle("gnu.java.locale.LocaleInformation", @@ -148,7 +152,20 @@ public final class DecimalFormatSymbols { res = null; } - setCurrency(Currency.getInstance(loc)); + try + { + Currency localeCurrency; + + localeCurrency = Currency.getInstance(loc); + if (localeCurrency != null) + { + setCurrency(localeCurrency); + } + } + catch(IllegalArgumentException exception) + { + /* Locale has an invalid currency */ + } decimalSeparator = safeGetChar (res, "decimalSeparator", '.'); digit = safeGetChar (res, "digit", '#'); exponential = safeGetChar (res, "exponential", 'E'); @@ -393,9 +410,9 @@ public final class DecimalFormatSymbols */ public void setCurrency (Currency currency) { - this.currency = currency; intlCurrencySymbol = currency.getCurrencyCode(); currencySymbol = currency.getSymbol(); + this.currency = currency; } /** Index: java/util/Currency.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/util/Currency.java,v retrieving revision 1.9 diff -u -3 -p -u -r1.9 Currency.java --- java/util/Currency.java 11 Jan 2005 09:44:32 -0000 1.9 +++ java/util/Currency.java 11 Jan 2005 15:31:39 -0000 @@ -168,7 +168,8 @@ public final class Currency /* If there is no country code, return */ if (countryCode.equals("")) { - return; + throw new + IllegalArgumentException("The specified country code is invalid"); } /* Construct the key for the currency */ currencyKey = countryCode + ".currency"; @@ -248,6 +249,11 @@ public final class Currency */ Currency newCurrency; + if (locale == null || locale.getCountry() == null) + { + throw new + NullPointerException("The locale or its country is null."); + } /* Attempt to get the currency from the cache */ newCurrency = (Currency) cache.get(locale); if (newCurrency == null) @@ -299,7 +305,6 @@ public final class Currency for (int i = 0;i < allLocales.length; i++) { Currency testCurrency = getInstance (allLocales[i]); - if (testCurrency != null && testCurrency.getCurrencyCode().equals(currencyCode)) return testCurrency;