From 3bfc6a2d8eccd8966aeae6f133ef535196725e4e Mon Sep 17 00:00:00 2001 From: Alex Shinn Date: Wed, 7 Jul 2010 21:14:27 +0900 Subject: [PATCH] adding stack traces for scripts --- eval.c | 2 +- main.c | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) 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;