summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--unwind.c3
-rw-r--r--unwind.h7
2 files changed, 4 insertions, 6 deletions
diff --git a/unwind.c b/unwind.c
index 69068e9b..900d614e 100644
--- a/unwind.c
+++ b/unwind.c
@@ -681,9 +681,8 @@ val uw_register_subtype(val sub, val sup)
return sup;
}
-void uw_continue(uw_frame_t *current, uw_frame_t *cont)
+void uw_continue(uw_frame_t *cont)
{
- uw_pop_frame(current);
uw_exit_point = cont;
uw_unwind_to_exit_point();
}
diff --git a/unwind.h b/unwind.h
index ba2ac767..3a88574b 100644
--- a/unwind.h
+++ b/unwind.h
@@ -122,7 +122,7 @@ noreturn val uw_errorf(val fmt, ...);
noreturn val uw_errorfv(val fmt, struct args *args);
val uw_register_subtype(val sub, val super);
val uw_exception_subtype_p(val sub, val sup);
-void uw_continue(uw_frame_t *curr, uw_frame_t *target);
+void uw_continue(uw_frame_t *target);
void uw_push_guard(uw_frame_t *);
void uw_push_debug(uw_frame_t *, val func, struct args *,
val ub_p_a_pairs, val env, val data,
@@ -217,10 +217,9 @@ noreturn val type_mismatch(val, ...);
default: \
abort(); \
} \
- if (uw_catch.ca.cont) \
- uw_continue(&uw_catch, \
- uw_catch.ca.cont); \
uw_pop_frame(&uw_catch); \
+ if (uw_catch.ca.cont) \
+ uw_continue(uw_catch.ca.cont); \
} while(0)
#define internal_error(STR) \