reflect: declare slice as *[]unsafe.Pointer instead of *[]byte The new garbage collector (CL 6114046) may find the fake *[]byte value and interpret its contents as bytes rather than as potential pointers. This may lead the garbage collector to free memory blocks that shouldn't be freed. R=dvyukov, rsc, dave, minux.ma, remyoudompheng, iant CC=golang-dev https://golang.org/cl/7000059
diff --git a/src/pkg/reflect/value.go b/src/pkg/reflect/value.go index 93401fe..10a4c07 100644 --- a/src/pkg/reflect/value.go +++ b/src/pkg/reflect/value.go
@@ -1491,7 +1491,7 @@ } // Declare slice so that gc can see the base pointer in it. - var x []byte + var x []unsafe.Pointer // Reinterpret as *SliceHeader to edit. s := (*SliceHeader)(unsafe.Pointer(&x)) @@ -1899,7 +1899,7 @@ } // Declare slice so that gc can see the base pointer in it. - var x []byte + var x []unsafe.Pointer // Reinterpret as *SliceHeader to edit. s := (*SliceHeader)(unsafe.Pointer(&x))