]> Cypherpunks repositories - gostls13.git/commitdiff
reflect: document the unreliability of StringHeader and SliceHeader
authorRob Pike <r@golang.org>
Mon, 8 Apr 2013 01:42:47 +0000 (18:42 -0700)
committerRob Pike <r@golang.org>
Mon, 8 Apr 2013 01:42:47 +0000 (18:42 -0700)
R=golang-dev, adg, dvyukov
CC=golang-dev
https://golang.org/cl/8494045

src/pkg/reflect/value.go

index 5a37204895b8d8ec59fbe70cdc6eaad09b4c8563..80aa85723c17b60bda114cbcff358cf35fb6813f 100644 (file)
@@ -1699,14 +1699,22 @@ func (v Value) UnsafeAddr() uintptr {
 }
 
 // StringHeader is the runtime representation of a string.
-// It cannot be used safely or portably.
+// It cannot be used safely or portably and its representation may
+// change in a later release.
+// Moreover, the Data field is not sufficient to guarantee the data
+// it references will not be garbage collected, so programs must keep
+// a separate, correctly typed pointer to the underlying data.
 type StringHeader struct {
        Data uintptr
        Len  int
 }
 
 // SliceHeader is the runtime representation of a slice.
-// It cannot be used safely or portably.
+// It cannot be used safely or portably and its representation may
+// change in a later release.
+// Moreover, the Data field is not sufficient to guarantee the data
+// it references will not be garbage collected, so programs must keep
+// a separate, correctly typed pointer to the underlying data.
 type SliceHeader struct {
        Data uintptr
        Len  int