From 5bb1e71bca0c57339f8efcf2066ff0386d32b801 Mon Sep 17 00:00:00 2001 From: George Rhoten Date: Sun, 3 Jul 2016 07:56:36 +0000 Subject: [PATCH] ICU-12611 Fix some issues found through static analysis. X-SVN-Rev: 38937 --- .../com/ibm/icu/impl/CharacterIteration.java | 4 ++-- .../core/src/com/ibm/icu/impl/ICUBinary.java | 2 +- .../src/com/ibm/icu/impl/Trie2Writable.java | 8 ++++---- .../core/src/com/ibm/icu/impl/URLHandler.java | 18 ++++++++++-------- .../com/ibm/icu/text/CharsetRecog_mbcs.java | 6 ------ .../com/ibm/icu/text/DateIntervalFormat.java | 3 ++- .../core/src/com/ibm/icu/text/NFRuleSet.java | 2 +- .../src/com/ibm/icu/text/SpoofChecker.java | 6 ++---- .../ibm/icu/text/CaseFoldTransliterator.java | 2 +- .../ibm/icu/text/LowercaseTransliterator.java | 4 ++-- .../ibm/icu/text/TitlecaseTransliterator.java | 4 ++-- .../ibm/icu/text/UppercaseTransliterator.java | 4 ++-- 12 files changed, 29 insertions(+), 34 deletions(-) diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/CharacterIteration.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/CharacterIteration.java index 2ff2a428e20..a26b81a4fe1 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/impl/CharacterIteration.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/CharacterIteration.java @@ -31,11 +31,11 @@ public final class CharacterIteration { public static int next32(CharacterIterator ci) { // If the current position is at a surrogate pair, move to the trail surrogate // which leaves it in position for underlying iterator's next() to work. - int c= ci.current(); + int c = ci.current(); if (c >= UTF16.LEAD_SURROGATE_MIN_VALUE && c<=UTF16.LEAD_SURROGATE_MAX_VALUE) { c = ci.next(); if (cUTF16.TRAIL_SURROGATE_MAX_VALUE) { - c = ci.previous(); + ci.previous(); } } diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUBinary.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUBinary.java index 578513c5456..0b4009062bd 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUBinary.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUBinary.java @@ -570,7 +570,7 @@ public final class ICUBinary { */ public static int readHeader(ByteBuffer bytes, int dataFormat, Authenticate authenticate) throws IOException { - assert bytes.position() == 0; + assert bytes != null && bytes.position() == 0; byte magic1 = bytes.get(2); byte magic2 = bytes.get(3); if (magic1 != MAGIC1 || magic2 != MAGIC2) { diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/Trie2Writable.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/Trie2Writable.java index 640285cfc65..de0aeb70b7e 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/impl/Trie2Writable.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/Trie2Writable.java @@ -834,7 +834,7 @@ public class Trie2Writable extends Trie2 { if (UTRIE2_DEBUG) { /* we saved some space */ - System.out.printf("compacting UTrie2: count of 32-bit data words %d->%d\n", + System.out.printf("compacting UTrie2: count of 32-bit data words %d->%d%n", dataLength, newStart); } @@ -915,7 +915,7 @@ public class Trie2Writable extends Trie2 { if (UTRIE2_DEBUG) { /* we saved some space */ - System.out.printf("compacting UTrie2: count of 16-bit index-2 words %d->%d\n", + System.out.printf("compacting UTrie2: count of 16-bit index-2 words %d->%d%n", index2Length, newStart); } @@ -942,7 +942,7 @@ public class Trie2Writable extends Trie2 { this.highStart=localHighStart; if (UTRIE2_DEBUG) { - System.out.printf("UTrie2: highStart U+%04x highValue 0x%x initialValue 0x%x\n", + System.out.printf("UTrie2: highStart U+%04x highValue 0x%x initialValue 0x%x%n", highStart, highValue, initialValue); } @@ -957,7 +957,7 @@ public class Trie2Writable extends Trie2 { compactIndex2(); } else { if (UTRIE2_DEBUG) { - System.out.printf("UTrie2: highStart U+%04x count of 16-bit index-2 words %d->%d\n", + System.out.printf("UTrie2: highStart U+%04x count of 16-bit index-2 words %d->%d%n", highStart, index2Length, UTRIE2_INDEX_1_OFFSET); } } diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/URLHandler.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/URLHandler.java index 0758167fb23..328eaace26f 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/impl/URLHandler.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/URLHandler.java @@ -171,15 +171,17 @@ public abstract class URLHandler { } private void process(URLVisitor v, boolean recurse, boolean strip, String path, File[] files) { - for (int i = 0; i < files.length; i++) { - File f = files[i]; - - if (f.isDirectory()) { - if (recurse) { - process(v, recurse, strip, path + f.getName()+ '/', f.listFiles()); + if (files != null) { + for (int i = 0; i < files.length; i++) { + File f = files[i]; + + if (f.isDirectory()) { + if (recurse) { + process(v, recurse, strip, path + f.getName()+ '/', f.listFiles()); + } + } else { + v.visit(strip? f.getName() : path + f.getName()); } - } else { - v.visit(strip? f.getName() : path + f.getName()); } } } diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetRecog_mbcs.java b/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetRecog_mbcs.java index 37d22ed3a52..3a389588bc9 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetRecog_mbcs.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/text/CharsetRecog_mbcs.java @@ -141,14 +141,12 @@ abstract class CharsetRecog_mbcs extends CharsetRecognizer { // static class iteratedChar { int charValue = 0; // 1-4 bytes from the raw input data - int index = 0; int nextIndex = 0; boolean error = false; boolean done = false; void reset() { charValue = 0; - index = -1; nextIndex = 0; error = false; done = false; @@ -199,7 +197,6 @@ abstract class CharsetRecog_mbcs extends CharsetRecognizer { 0x838a, 0x838b, 0x838d, 0x8393, 0x8e96, 0x93fa, 0x95aa}; boolean nextChar(iteratedChar it, CharsetDetector det) { - it.index = it.nextIndex; it.error = false; int firstByte; firstByte = it.charValue = it.nextByte(det); @@ -262,7 +259,6 @@ abstract class CharsetRecog_mbcs extends CharsetRecognizer { 0xbba1, 0xbdd1, 0xc2c4, 0xc3b9, 0xc440, 0xc45f}; boolean nextChar(iteratedChar it, CharsetDetector det) { - it.index = it.nextIndex; it.error = false; int firstByte; firstByte = it.charValue = it.nextByte(det); @@ -321,7 +317,6 @@ abstract class CharsetRecog_mbcs extends CharsetRecognizer { * packed into an int. */ boolean nextChar(iteratedChar it, CharsetDetector det) { - it.index = it.nextIndex; it.error = false; int firstByte = 0; int secondByte = 0; @@ -461,7 +456,6 @@ abstract class CharsetRecog_mbcs extends CharsetRecognizer { * packed into an int. */ boolean nextChar(iteratedChar it, CharsetDetector det) { - it.index = it.nextIndex; it.error = false; int firstByte = 0; int secondByte = 0; diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/DateIntervalFormat.java b/icu4j/main/classes/core/src/com/ibm/icu/text/DateIntervalFormat.java index 759b4b7d9e9..2924da184b2 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/text/DateIntervalFormat.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/text/DateIntervalFormat.java @@ -786,7 +786,8 @@ public class DateIntervalFormat extends UFormat { FieldPosition otherPos = new FieldPosition(pos.getField()); fDateFormat.format(secondCal, appendTo, otherPos); if (pos.getEndIndex() == 0 && otherPos.getEndIndex() > 0) { - pos = otherPos; + pos.setBeginIndex(otherPos.getBeginIndex()); + pos.setEndIndex(otherPos.getEndIndex()); } } fDateFormat.applyPattern(originalPattern); diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/NFRuleSet.java b/icu4j/main/classes/core/src/com/ibm/icu/text/NFRuleSet.java index 26929fa0bde..ad6d3eff9df 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/text/NFRuleSet.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/text/NFRuleSet.java @@ -493,7 +493,7 @@ final class NFRuleSet { } // if the number isn't an integer, we use one f the fraction rules... - if (nonNumericalRules != null && number != Math.floor(number)) { + if (number != Math.floor(number)) { if (number < 1 && nonNumericalRules[PROPER_FRACTION_RULE_INDEX] != null) { // if the number is between 0 and 1, return the proper // fraction rule diff --git a/icu4j/main/classes/core/src/com/ibm/icu/text/SpoofChecker.java b/icu4j/main/classes/core/src/com/ibm/icu/text/SpoofChecker.java index 85c1b328b9c..eef06290b1c 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/text/SpoofChecker.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/text/SpoofChecker.java @@ -2341,12 +2341,10 @@ public class SpoofChecker { int CFUStringLengthsSize = bytes.getInt(); int anyCaseTrieOffset = bytes.getInt(); - @SuppressWarnings("unused") - int anyCaseTrieSize = bytes.getInt(); + /*int anyCaseTrieSize =*/ bytes.getInt(); int lowerCaseTrieOffset = bytes.getInt(); - @SuppressWarnings("unused") - int lowerCaseTrieLength = bytes.getInt(); + /*int lowerCaseTrieLength =*/ bytes.getInt(); int scriptSetsOffset = bytes.getInt(); int scriptSetslength = bytes.getInt(); diff --git a/icu4j/main/classes/translit/src/com/ibm/icu/text/CaseFoldTransliterator.java b/icu4j/main/classes/translit/src/com/ibm/icu/text/CaseFoldTransliterator.java index 0fc58c51cd9..5cc39b0678e 100644 --- a/icu4j/main/classes/translit/src/com/ibm/icu/text/CaseFoldTransliterator.java +++ b/icu4j/main/classes/translit/src/com/ibm/icu/text/CaseFoldTransliterator.java @@ -37,7 +37,7 @@ class CaseFoldTransliterator extends Transliterator{ Transliterator.registerSpecialInverse("CaseFold", "Upper", false); } - private UCaseProps csp; + private final UCaseProps csp; private ReplaceableContextIterator iter; private StringBuilder result; diff --git a/icu4j/main/classes/translit/src/com/ibm/icu/text/LowercaseTransliterator.java b/icu4j/main/classes/translit/src/com/ibm/icu/text/LowercaseTransliterator.java index 57e84911809..bdf6dce1bdb 100644 --- a/icu4j/main/classes/translit/src/com/ibm/icu/text/LowercaseTransliterator.java +++ b/icu4j/main/classes/translit/src/com/ibm/icu/text/LowercaseTransliterator.java @@ -38,9 +38,9 @@ class LowercaseTransliterator extends Transliterator{ Transliterator.registerSpecialInverse("Lower", "Upper", true); } - private ULocale locale; + private final ULocale locale; - private UCaseProps csp; + private final UCaseProps csp; private ReplaceableContextIterator iter; private StringBuilder result; private int[] locCache; diff --git a/icu4j/main/classes/translit/src/com/ibm/icu/text/TitlecaseTransliterator.java b/icu4j/main/classes/translit/src/com/ibm/icu/text/TitlecaseTransliterator.java index 91bbb487b3a..674817dc7ab 100644 --- a/icu4j/main/classes/translit/src/com/ibm/icu/text/TitlecaseTransliterator.java +++ b/icu4j/main/classes/translit/src/com/ibm/icu/text/TitlecaseTransliterator.java @@ -35,9 +35,9 @@ class TitlecaseTransliterator extends Transliterator { registerSpecialInverse("Title", "Lower", false); } - private ULocale locale; + private final ULocale locale; - private UCaseProps csp; + private final UCaseProps csp; private ReplaceableContextIterator iter; private StringBuilder result; private int[] locCache; diff --git a/icu4j/main/classes/translit/src/com/ibm/icu/text/UppercaseTransliterator.java b/icu4j/main/classes/translit/src/com/ibm/icu/text/UppercaseTransliterator.java index f83e2aeea5c..18bba7c9f72 100644 --- a/icu4j/main/classes/translit/src/com/ibm/icu/text/UppercaseTransliterator.java +++ b/icu4j/main/classes/translit/src/com/ibm/icu/text/UppercaseTransliterator.java @@ -35,9 +35,9 @@ class UppercaseTransliterator extends Transliterator { }); } - private ULocale locale; + private final ULocale locale; - private UCaseProps csp; + private final UCaseProps csp; private ReplaceableContextIterator iter; private StringBuilder result; private int[] locCache;