additional test for TSimpleJSONProtocol
diff --git a/lib/go/thrift/json_protocol.go b/lib/go/thrift/json_protocol.go
index 7be685d..800ac22 100644
--- a/lib/go/thrift/json_protocol.go
+++ b/lib/go/thrift/json_protocol.go
@@ -32,10 +32,7 @@
 // for references to _ParseContext see tsimplejson_protocol.go
 
 // JSON protocol implementation for thrift.
-//
-// This protocol produces/consumes a simple output format
-// suitable for parsing by scripting languages.  It should not be
-// confused with the full-featured TJSONProtocol.
+// Utilizes Simple JSON protocol
 //
 type TJSONProtocol struct {
 	*TSimpleJSONProtocol
diff --git a/lib/go/thrift/simple_json_protocol.go b/lib/go/thrift/simple_json_protocol.go
index 2e8a711..f5e0c05 100644
--- a/lib/go/thrift/simple_json_protocol.go
+++ b/lib/go/thrift/simple_json_protocol.go
@@ -60,7 +60,7 @@
 	return "UNKNOWN-PARSE-CONTEXT"
 }
 
-// JSON protocol implementation for thrift.
+// Simple JSON protocol implementation for thrift.
 //
 // This protocol produces/consumes a simple output format
 // suitable for parsing by scripting languages.  It should not be
@@ -1316,7 +1316,7 @@
 func (p *TSimpleJSONProtocol) safePeekContains(b []byte) bool {
 	for i := 0; i < len(b); i++ {
 		a, _ := p.reader.Peek(i + 1)
-		if len(a) == 0 || a[i] != b[i] {
+		if len(a) < (i+1) || a[i] != b[i] {
 			return false
 		}
 	}
diff --git a/lib/go/thrift/simple_json_protocol_test.go b/lib/go/thrift/simple_json_protocol_test.go
index 7b98082..0126da0 100644
--- a/lib/go/thrift/simple_json_protocol_test.go
+++ b/lib/go/thrift/simple_json_protocol_test.go
@@ -714,3 +714,25 @@
 	}
 	trans.Close()
 }
+
+func TestWriteSimpleJSONProtocolSafePeek(t *testing.T) {
+	trans := NewTMemoryBuffer()
+	p := NewTSimpleJSONProtocol(trans)
+	trans.Write([]byte{'a', 'b'})
+	trans.Flush(context.Background())
+	
+	test1 := p.safePeekContains([]byte{'a', 'b'})
+	if !test1 {
+		t.Fatalf("Should match at test 1")
+	}
+	
+	test2 := p.safePeekContains([]byte{'a', 'b', 'c', 'd'})
+	if test2 {
+		t.Fatalf("Should not match at test 2")
+	}
+	
+	test3 := p.safePeekContains([]byte{'x', 'y'})
+	if test3 {
+		t.Fatalf("Should not match at test 3")
+	}
+}