diff --git a/eval.c b/eval.c index 36bff64a..ff86951e 100644 --- a/eval.c +++ b/eval.c @@ -51,7 +51,7 @@ void sexp_warn (sexp ctx, char *msg, sexp x) { } sexp sexp_warn_undefs_op (sexp ctx, sexp self, sexp_sint_t n, sexp from, sexp to, sexp res) { - sexp x, ignore = sexp_exceptionp(res) ? sexp_exception_irritants(res) : SEXP_NULL; + sexp x, ignore = (res && sexp_exceptionp(res)) ? sexp_exception_irritants(res) : SEXP_NULL; if (sexp_envp(from)) from = sexp_env_bindings(from); for (x=from; sexp_pairp(x) && x!=to; x=sexp_env_next_cell(x)) if (sexp_cdr(x) == SEXP_UNDEF && sexp_car(x) != ignore diff --git a/main.c b/main.c index 169ecabe..dae2168d 100644 --- a/main.c +++ b/main.c @@ -205,7 +205,7 @@ static void repl (sexp ctx, sexp env) { #if SEXP_USE_WARN_UNDEFS sexp_warn_undefs(ctx, sexp_env_bindings(env), tmp, res); #endif - if (sexp_exceptionp(res)) { + if (res && sexp_exceptionp(res)) { sexp_print_exception(ctx, res, err); sexp_stack_trace(ctx, err); } else if (res != SEXP_VOID) {