diff --git a/eval.c b/eval.c index af6b7bde..26f1e450 100644 --- a/eval.c +++ b/eval.c @@ -33,7 +33,7 @@ void sexp_stack_trace (sexp ctx, sexp out) { sexp_write(ctx, sexp_bytecode_name(bc), out); else sexp_printf(ctx, out, "anon: %p", bc); - if ((ls=sexp_bytecode_source(bc))) { + if ((ls=sexp_bytecode_source(bc)) && sexp_pairp(ls)) { if (sexp_fixnump(sexp_cdr(ls)) && (sexp_cdr(ls) >= SEXP_ZERO)) { sexp_write_string(ctx, " on line ", out); sexp_write(ctx, sexp_cdr(ls), out); diff --git a/main.c b/main.c index 08a55662..03caf762 100644 --- a/main.c +++ b/main.c @@ -74,6 +74,7 @@ static sexp check_exception (sexp ctx, sexp res) { if (! sexp_oportp(err)) err = sexp_make_output_port(ctx, stderr, SEXP_FALSE); sexp_print_exception(ctx, res, err); + sexp_stack_trace(ctx, err); exit_failure(); } return res;