--- old/src/share/classes/java/lang/String.java 2013-05-13 23:46:39.941865748 +0200 +++ new/src/share/classes/java/lang/String.java 2013-05-13 23:46:39.847867440 +0200 @@ -1038,22 +1038,24 @@ * @since 1.5 */ public boolean contentEquals(CharSequence cs) { - if (value.length != cs.length()) - return false; // Argument is a StringBuffer, StringBuilder if (cs instanceof AbstractStringBuilder) { if (cs instanceof StringBuffer) { synchronized(cs) { - return nonSyncContentEquals((AbstractStringBuilder)cs); + return value.length == cs.length() && + nonSyncContentEquals((AbstractStringBuilder)cs); } } else { - return nonSyncContentEquals((AbstractStringBuilder)cs); + return value.length == cs.length() && + nonSyncContentEquals((AbstractStringBuilder)cs); } } // Argument is a String if (cs.equals(this)) return true; // Argument is a generic CharSequence + if (value.length != cs.length()) + return false; char v1[] = value; int i = 0; int n = value.length;