mirror of
https://github.com/golang/go
synced 2024-11-08 14:46:20 -07:00
a70a2a8ad6
Updating each call in place broke when there were multiple cgo calls used as arguments to another cgo call where some required rewriting. Instead, rewrite calls to strings via the existing mangling mechanism, and only substitute the top level call in place. Fixes #28540 Change-Id: Ifd66f04c205adc4ad6dd5ee8e79e57dce17e86bb Reviewed-on: https://go-review.googlesource.com/c/146860 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
23 lines
544 B
Go
23 lines
544 B
Go
// Copyright 2018 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
// Crash from call with two arguments that need pointer checking.
|
|
// No runtime test; just make sure it compiles.
|
|
|
|
package cgotest
|
|
|
|
/*
|
|
static void twoargs1(void *p, int n) {}
|
|
static void *twoargs2() { return 0; }
|
|
static int twoargs3(void * p) { return 0; }
|
|
*/
|
|
import "C"
|
|
|
|
import "unsafe"
|
|
|
|
func twoargsF() {
|
|
v := []string{}
|
|
C.twoargs1(C.twoargs2(), C.twoargs3(unsafe.Pointer(&v)))
|
|
}
|