]> granicus.if.org Git - icu/commitdiff
ICU-10017 Do defensive copy of TimeUnitAmount objects in TimePeriod.forAmounts.
authorTravis Keep <keep94@gmail.com>
Thu, 28 Mar 2013 21:04:41 +0000 (21:04 +0000)
committerTravis Keep <keep94@gmail.com>
Thu, 28 Mar 2013 21:04:41 +0000 (21:04 +0000)
X-SVN-Rev: 33474

icu4j/main/classes/core/src/com/ibm/icu/util/TimePeriod.java

index d406b7f792119d9eee95587a1a3a774e73e6c1d8..5bac6f6dc7bde01f0ee7477e110ac2f4422319fe 100644 (file)
@@ -67,7 +67,10 @@ public final class TimePeriod implements Iterable<TimeUnitAmount> {
                 throw new IllegalArgumentException(
                         "Only one TimeUnitAmount per unit allowed.");
             }
-            fields[index] = tua;
+            // This line is necessary to guarantee immutability of the TimePeriod
+            // class. A Number object, which is in TimeUnitAmount, need not be immutable,
+            // but Double is immutable.
+            fields[index] = new TimeUnitAmount(tua.getNumber().doubleValue(), tua.getTimeUnit());
             size++;
         }
         return new TimePeriod(fields, size, computeHash(fields));