diff options
Diffstat (limited to 'src/primitives.c')
| -rw-r--r-- | src/primitives.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/primitives.c b/src/primitives.c index e5e65e3..971aa87 100644 --- a/src/primitives.c +++ b/src/primitives.c @@ -15,7 +15,10 @@ SExpRef primitive_assert_exception(Interp *interp, SExpRef args, bool istail) { SExpRef primitive_assert_error(Interp *interp, SExpRef args, bool istail) { SExpRef eargs = lisp_eval_args(interp, args); - if (VALTYPE(eargs) == kErrSignal) return interp->t; + if (VALTYPE(eargs) == kErrSignal) { + interp->stacktrace = NIL; + return interp->t; + } const char *expstr = lisp_to_string(interp, CAR(args)); SExpRef ret = new_error(interp, "assert-error failed, no error: %s.\n", expstr); @@ -37,6 +40,7 @@ SExpRef primitive_try(Interp *interp, SExpRef args, bool istail) { return new_error(interp, "try: syntax error, catch is not a function.\n"); } if (VALTYPE(ret) == kExceptionSignal) { + interp->stacktrace = NIL; PUSH_REG(catch_func); ret = lisp_apply(interp, catch_func, CONS(REF(ret)->ret, NIL), istail); POP_REG(); |
