aboutsummaryrefslogtreecommitdiff
path: root/libgo/runtime/panic.c
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/runtime/panic.c')
-rw-r--r--libgo/runtime/panic.c26
1 files changed, 15 insertions, 11 deletions
diff --git a/libgo/runtime/panic.c b/libgo/runtime/panic.c
index 493fde8..8cb6bff 100644
--- a/libgo/runtime/panic.c
+++ b/libgo/runtime/panic.c
@@ -16,19 +16,23 @@ runtime_throw(const char *s)
void
runtime_panicstring(const char *s)
{
+ M* mp;
Eface err;
- if(runtime_m()->mallocing) {
- runtime_printf("panic: %s\n", s);
- runtime_throw("panic during malloc");
- }
- if(runtime_m()->gcing) {
- runtime_printf("panic: %s\n", s);
- runtime_throw("panic during gc");
- }
- if(runtime_m()->locks) {
- runtime_printf("panic: %s\n", s);
- runtime_throw("panic holding locks");
+ mp = runtime_m();
+ if (mp != nil) {
+ if(mp->mallocing) {
+ runtime_printf("panic: %s\n", s);
+ runtime_throw("panic during malloc");
+ }
+ if(mp->gcing) {
+ runtime_printf("panic: %s\n", s);
+ runtime_throw("panic during gc");
+ }
+ if(mp->locks) {
+ runtime_printf("panic: %s\n", s);
+ runtime_throw("panic holding locks");
+ }
}
runtime_newErrorCString(s, &err);
runtime_panic(err);