diff options
Diffstat (limited to 'src/pkg/runtime/cgocall.c')
-rw-r--r-- | src/pkg/runtime/cgocall.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/pkg/runtime/cgocall.c b/src/pkg/runtime/cgocall.c index 7b2ec26f3..75d3850ef 100644 --- a/src/pkg/runtime/cgocall.c +++ b/src/pkg/runtime/cgocall.c @@ -234,14 +234,18 @@ void runtime·cgocallbackg1(void); void runtime·cgocallbackg(void) { + uintptr pc, sp; + if(g != m->curg) { runtime·prints("runtime: bad g in cgocallback"); runtime·exit(2); } + pc = g->syscallpc; + sp = g->syscallsp; runtime·exitsyscall(); // coming out of cgo call runtime·cgocallbackg1(); - runtime·entersyscall(); // going back to cgo call + runtime·reentersyscall((void*)pc, sp); // going back to cgo call } void |