From 4ef977fec3abe84db61e6c4475bf8b49e9872718 Mon Sep 17 00:00:00 2001 From: David Holmes Date: Wed, 22 May 2013 20:21:13 -0400 Subject: [PATCH] 8014814: (str) StringBuffer "null" is not appended Reviewed-by: alanb --- .../share/classes/java/lang/StringBuffer.java | 6 ++--- .../java/lang/StringBuffer/ToStringCache.java | 24 ++++++++++++++++++- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/jdk/src/share/classes/java/lang/StringBuffer.java b/jdk/src/share/classes/java/lang/StringBuffer.java index 8ead0721ffd..9bc8f3ba10f 100644 --- a/jdk/src/share/classes/java/lang/StringBuffer.java +++ b/jdk/src/share/classes/java/lang/StringBuffer.java @@ -335,10 +335,8 @@ import java.util.Arrays; * @since 1.5 */ @Override - public StringBuffer append(CharSequence s) { - // Note, synchronization achieved via invocations of other StringBuffer methods after - // narrowing of s to specific type - // Ditto for toStringCache clearing + public synchronized StringBuffer append(CharSequence s) { + toStringCache = null; super.append(s); return this; } diff --git a/jdk/test/java/lang/StringBuffer/ToStringCache.java b/jdk/test/java/lang/StringBuffer/ToStringCache.java index 6259e27d0e3..e6c97f0c28a 100644 --- a/jdk/test/java/lang/StringBuffer/ToStringCache.java +++ b/jdk/test/java/lang/StringBuffer/ToStringCache.java @@ -22,7 +22,7 @@ */ /* @test - * @bug 8013395 + * @bug 8013395 8014814 * @summary Test StringBuffer.toString caching */ @@ -199,6 +199,28 @@ public class ToStringCache { b = sb.toString(); checkUnequal(a, b); + // Extra checks that append(null) works correctly + + sb.append((String)null); + b = sb.toString(); + checkUnequal(a, b); + a = b; + + sb.append((StringBuffer)null); + b = sb.toString(); + checkUnequal(a, b); + a = b; + + sb.append((StringBuilder)null); + b = sb.toString(); + checkUnequal(a, b); + a = b; + + sb.append((CharSequence)null); + b = sb.toString(); + checkUnequal(a, b); + a = b; + // non-mutating methods // Reset to known value