mirror of
https://github.com/golang/go
synced 2024-11-23 06:30:06 -07:00
f423d616b1
CL 258938 changed the way C to Go calls work such that they now construct a C struct on the C side for the arguments and space for the results. Any pointers in the result space must be zeroed, so we just zero the whole struct. However, C makes it surprisingly hard to robustly zero any struct type. We had used a "{0}" initializer, which works in the vast majority of cases, but fails if the type is empty or effectively empty. This CL fixes this by changing how the cgo tool zero-initializes the argument struct to be more robust. Fixes #42495. Change-Id: Id1749b9d751e59eb7a02a9d44fec0698a2bf63cd Reviewed-on: https://go-review.googlesource.com/c/go/+/269337 Trust: Austin Clements <austin@google.com> Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com> Reviewed-by: Ian Lance Taylor <iant@golang.org> |
||
---|---|---|
.. | ||
testdata | ||
backdoor.go | ||
buildid_linux.go | ||
callback_c_gc.c | ||
callback_c_gccgo.c | ||
callback_c.c | ||
callback.go | ||
cgo_linux_test.go | ||
cgo_stubs_android_test.go | ||
cgo_test.go | ||
cgo_thread_lock.go | ||
cgo_unix_test.go | ||
cthread_unix.c | ||
cthread_windows.c | ||
issue1435.go | ||
issue4029.c | ||
issue4029.go | ||
issue4029w.go | ||
issue4273.c | ||
issue4273b.c | ||
issue4339.c | ||
issue4339.h | ||
issue5548_c.c | ||
issue5740a.c | ||
issue5740b.c | ||
issue6833_c.c | ||
issue6907export_c.c | ||
issue6997_linux.c | ||
issue6997_linux.go | ||
issue7234_test.go | ||
issue8148.go | ||
issue8331.h | ||
issue8517_windows.c | ||
issue8517_windows.go | ||
issue8517.go | ||
issue8694.go | ||
issue8811.c | ||
issue18146.go | ||
issue20910.c | ||
issue21897.go | ||
issue21897b.go | ||
issue31891.c | ||
issue42495.go | ||
overlaydir_test.go | ||
pkg_test.go | ||
setgid_linux.go | ||
sigaltstack.go | ||
sigprocmask.c | ||
sigprocmask.go | ||
test_unix.go | ||
test_windows.go | ||
test.go | ||
testx.go |