return "<nil>" when calling String() on a nil bytes.Buffer.

R=rsc
CC=go-dev
http://go/go-review/1016005
diff --git a/src/pkg/bytes/buffer.go b/src/pkg/bytes/buffer.go
index 7acddc4..6e5887c 100644
--- a/src/pkg/bytes/buffer.go
+++ b/src/pkg/bytes/buffer.go
@@ -42,8 +42,12 @@
 }
 
 // String returns the contents of the unread portion of the buffer
-// as a string.
+// as a string.  If the Buffer is a nil pointer, it returns "<nil>".
 func (b *Buffer) String() string {
+	if b == nil {
+		// Special case, useful in debugging.
+		return "<nil>"
+	}
 	return string(b.buf[b.off : len(b.buf)]);
 }
 
diff --git a/src/pkg/bytes/buffer_test.go b/src/pkg/bytes/buffer_test.go
index f82c984..c364eec 100644
--- a/src/pkg/bytes/buffer_test.go
+++ b/src/pkg/bytes/buffer_test.go
@@ -232,3 +232,11 @@
 	}
 	empty(t, "TestMixedReadsAndWrites (2)", &buf, s, make([]byte, buf.Len()));
 }
+
+
+func TestNil(t *testing.T) {
+	var b *Buffer;
+	if b.String() != "<nil>" {
+		t.Error("expcted <nil>; got %q", b.String());
+	}
+}