From: Markus Scherer Date: Mon, 20 Oct 2014 21:08:42 +0000 (+0000) Subject: ICU-11342 cast CharBuffer to CharSequence before calling .subSequence() X-Git-Tag: milestone-59-0-1~1455 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a3e0dc1530637190556738597e84be277934b011;p=icu ICU-11342 cast CharBuffer to CharSequence before calling .subSequence() X-SVN-Rev: 36682 --- diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUResourceBundleReader.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUResourceBundleReader.java index 1f3a075a283..938ac647bb0 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUResourceBundleReader.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/ICUResourceBundleReader.java @@ -646,7 +646,9 @@ public final class ICUResourceBundleReader { length=((int)b16BitUnits.charAt(offset+1)<<16)|b16BitUnits.charAt(offset+2); offset+=3; } - s = b16BitUnits.subSequence(offset, offset + length).toString(); + // Cast up to CharSequence to insulate against the CharBuffer.subSequence() return type change + // which makes code compiled for a newer JDK not run on an older one. + s = ((CharSequence) b16BitUnits).subSequence(offset, offset + length).toString(); } } else { offset=getResourceByteOffset(offset); diff --git a/icu4j/main/tests/charset/src/com/ibm/icu/dev/test/charset/TestCharset.java b/icu4j/main/tests/charset/src/com/ibm/icu/dev/test/charset/TestCharset.java index 6e11046a76e..b1452f1ab33 100644 --- a/icu4j/main/tests/charset/src/com/ibm/icu/dev/test/charset/TestCharset.java +++ b/icu4j/main/tests/charset/src/com/ibm/icu/dev/test/charset/TestCharset.java @@ -2752,7 +2752,9 @@ public class TestCharset extends TestFmwk { }; ByteBuffer bb = ByteBuffer.wrap(byteout); CharBuffer cb = CharBuffer.wrap(charin); - CharBuffer cb2 = CharBuffer.wrap(cb.subSequence(0, 2)); + // Cast up to CharSequence to insulate against the CharBuffer.subSequence() return type change + // which makes code compiled for a newer JDK not run on an older one. + CharBuffer cb2 = CharBuffer.wrap(((CharSequence)cb).subSequence(0, 2)); encoder.reset(); if (!(encoder.encode(cb2, bb, true)).isOverflow()) { errln("Overflow error while encoding ASCII should have occurred.");