# HG changeset patch # User redestad # Date 1419009206 -3600 # Fri Dec 19 18:13:26 2014 +0100 # Node ID 2fa20183dea3b78b63aa292b37aea295b353e585 # Parent ee07afa6dc9b164812f0e442f40ddbd65928d259 [mq]: strfid diff --git a/src/java.base/share/classes/java/lang/String.java b/src/java.base/share/classes/java/lang/String.java --- a/src/java.base/share/classes/java/lang/String.java +++ b/src/java.base/share/classes/java/lang/String.java @@ -135,7 +135,7 @@ * unnecessary since Strings are immutable. */ public String() { - this.value = new char[0]; + this.value = "".value; } /** @@ -191,7 +191,11 @@ if (offset < 0) { throw new StringIndexOutOfBoundsException(offset); } - if (count < 0) { + if (count <= 0) { + if (count == 0) { + this.value = "".value; + return; + } throw new StringIndexOutOfBoundsException(count); } // Note: offset or count might be near -1>>>1. @@ -233,7 +237,11 @@ if (offset < 0) { throw new StringIndexOutOfBoundsException(offset); } - if (count < 0) { + if (count <= 0) { + if (count == 0) { + this.value = "".value; + return; + } throw new StringIndexOutOfBoundsException(count); } // Note: offset or count might be near -1>>>1. @@ -246,11 +254,11 @@ // Pass 1: Compute precise size of char[] int n = count; for (int i = offset; i < end; i++) { - int c = codePoints[i]; - if (Character.isBmpCodePoint(c)) - continue; - else if (Character.isValidCodePoint(c)) - n++; + int c = codePoints[i]; + if (Character.isBmpCodePoint(c)) + continue; + else if (Character.isValidCodePoint(c)) + n++; else throw new IllegalArgumentException(Integer.toString(c)); }