From: Shane Carr Date: Wed, 4 Oct 2017 22:28:09 +0000 (+0000) Subject: ICU-13177 Fixing coverity issues in number formatting code. X-Git-Tag: release-60-rc~49 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e2f537d42fcc7ec343eda2d9caacc2e679a69299;p=icu ICU-13177 Fixing coverity issues in number formatting code. X-SVN-Rev: 40553 --- diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/CustomSymbolCurrency.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/CustomSymbolCurrency.java index 6610f76a5ac..e8549096eea 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/CustomSymbolCurrency.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/CustomSymbolCurrency.java @@ -8,6 +8,7 @@ import com.ibm.icu.util.ULocale; public class CustomSymbolCurrency extends Currency { private static final long serialVersionUID = 2497493016770137670L; + // TODO: Serialization methods? private String symbol1; private String symbol2; @@ -60,4 +61,16 @@ public class CustomSymbolCurrency extends Currency { public String getCurrencyCode() { return symbol2; } + + @Override + public int hashCode() { + return super.hashCode() ^ symbol1.hashCode() ^ symbol2.hashCode(); + } + + @Override + public boolean equals(Object other) { + return super.equals(other) + && ((CustomSymbolCurrency)other).symbol1.equals(symbol1) + && ((CustomSymbolCurrency)other).symbol2.equals(symbol2); + } } diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/DecimalQuantity_DualStorageBCD.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/DecimalQuantity_DualStorageBCD.java index e127d6fa4c7..2ea374b6b50 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/DecimalQuantity_DualStorageBCD.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/DecimalQuantity_DualStorageBCD.java @@ -31,6 +31,7 @@ public final class DecimalQuantity_DualStorageBCD extends DecimalQuantity_Abstra public DecimalQuantity_DualStorageBCD() { setBcdToZero(); + flags = 0; } public DecimalQuantity_DualStorageBCD(long input) { diff --git a/icu4j/main/classes/core/src/com/ibm/icu/number/CompactNotation.java b/icu4j/main/classes/core/src/com/ibm/icu/number/CompactNotation.java index 320878ff26c..f9a383525ee 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/number/CompactNotation.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/number/CompactNotation.java @@ -120,7 +120,7 @@ public class CompactNotation extends Notation { StandardPlural plural = quantity.getStandardPlural(rules); String patternString = data.getPattern(magnitude, plural); - @SuppressWarnings("unused") // see #13177 + @SuppressWarnings("unused") // see #13075 int numDigits = -1; if (patternString == null) { // Use the default (non-compact) modifier. diff --git a/icu4j/main/classes/core/src/com/ibm/icu/number/FormattedNumber.java b/icu4j/main/classes/core/src/com/ibm/icu/number/FormattedNumber.java index 92cdd5d3ff8..cec506f6397 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/number/FormattedNumber.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/number/FormattedNumber.java @@ -145,7 +145,7 @@ public class FormattedNumber { NumberStringBuilder temp = new NumberStringBuilder(); int length = micros.modOuter.apply(temp, 0, 0); length += micros.modMiddle.apply(temp, 0, length); - length += micros.modInner.apply(temp, 0, length); + /* length += */ micros.modInner.apply(temp, 0, length); int prefixLength = micros.modOuter.getPrefixLength() + micros.modMiddle.getPrefixLength() + micros.modInner.getPrefixLength(); return temp.subSequence(0, prefixLength).toString(); diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/DecimalFormatSymbols.java b/icu4j/main/classes/core/src/com/ibm/icu/text/DecimalFormatSymbols.java index 8bba53a13d1..bed3481e953 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/text/DecimalFormatSymbols.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/text/DecimalFormatSymbols.java @@ -349,7 +349,7 @@ public class DecimalFormatSymbols implements Cloneable, Serializable { if (cc == digitStr.length()) { // One code point in this digit. // If it is 1 UTF-16 code unit long, set it in tmpDigits. - if (cc == 1) { + if (cc == 1 && tmpDigits != null) { tmpDigits[i] = (char) cp; } else { tmpDigits = null;