summaryrefslogtreecommitdiff
path: root/src/pkg/runtime/callback_windows.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pkg/runtime/callback_windows.c')
-rw-r--r--src/pkg/runtime/callback_windows.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/pkg/runtime/callback_windows.c b/src/pkg/runtime/callback_windows.c
index 88ee53bb5..285678fba 100644
--- a/src/pkg/runtime/callback_windows.c
+++ b/src/pkg/runtime/callback_windows.c
@@ -49,7 +49,7 @@ runtime·compilecallback(Eface fn, bool cleanstack)
runtime·cbctxts = &(cbs.ctxt[0]);
n = cbs.n;
for(i=0; i<n; i++) {
- if(cbs.ctxt[i]->gobody == fn.data) {
+ if(cbs.ctxt[i]->gobody == fn.data && cbs.ctxt[i]->cleanstack == cleanstack) {
runtime·unlock(&cbs);
// runtime·callbackasm is just a series of CALL instructions
// (each is 5 bytes long), and we want callback to arrive at
@@ -63,6 +63,7 @@ runtime·compilecallback(Eface fn, bool cleanstack)
c = runtime·mal(sizeof *c);
c->gobody = fn.data;
c->argsize = argsize;
+ c->cleanstack = cleanstack;
if(cleanstack && argsize!=0)
c->restorestack = argsize;
else