aboutsummaryrefslogtreecommitdiff
path: root/src/pkg/runtime/panic.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pkg/runtime/panic.c')
-rw-r--r--src/pkg/runtime/panic.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/pkg/runtime/panic.c b/src/pkg/runtime/panic.c
index ecf4111337..4b6829e011 100644
--- a/src/pkg/runtime/panic.c
+++ b/src/pkg/runtime/panic.c
@@ -214,6 +214,7 @@ runtime·panic(Eface e)
Defer *d, dabort;
Panic p;
uintptr pc, argp;
+ void (*fn)(G*);
runtime·memclr((byte*)&p, sizeof p);
p.arg = e;
@@ -266,7 +267,8 @@ runtime·panic(Eface e)
// Pass information about recovering frame to recovery.
g->sigcode0 = (uintptr)argp;
g->sigcode1 = (uintptr)pc;
- runtime·mcall(recovery);
+ fn = recovery;
+ runtime·mcall(&fn);
runtime·throw("recovery failed"); // mcall should not return
}
}