]> Cypherpunks repositories - gostls13.git/commitdiff
doc/go1.15: mention 1.15.3 cgo restriction on empty structs
authorIan Lance Taylor <iant@golang.org>
Sat, 12 Dec 2020 03:10:00 +0000 (19:10 -0800)
committerIan Lance Taylor <iant@golang.org>
Tue, 15 Dec 2020 21:04:49 +0000 (21:04 +0000)
For #40954

Change-Id: I6a30aed31a16e820817f4ca5c7f591222e922946
Reviewed-on: https://go-review.googlesource.com/c/go/+/277432
Trust: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
doc/go1.15.html

index c691bf3bd5b35556d185664e5029bcc16788eb1f..c9997c0ca368071b709a4d6aede26e03f52233ef 100644 (file)
@@ -397,6 +397,19 @@ Do not send CLs removing the interior tags from such phrases.
   documentation</a> for more information.
 </p>
 
+<p><!-- CL 250940 -->
+  In Go 1.15.3 and later, cgo will not permit Go code to allocate an
+  undefined struct type (a C struct defined as just <code>struct
+  S;</code> or similar) on the stack or heap.
+  Go code will only be permitted to use pointers to those types.
+  Allocating an instance of such a struct and passing a pointer, or a
+  full struct value, to C code was always unsafe and unlikely to work
+  correctly; it is now forbidden.
+  The fix is to either rewrite the Go code to use only pointers, or to
+  ensure that the Go code sees the full definition of the struct by
+  including the appropriate C header file.
+</p>
+
 <h3 id="commonname">X.509 CommonName deprecation</h3>
 
 <p><!-- CL 231379 -->