diff options
author | David Thompson <davet@gnu.org> | 2018-06-24 06:49:58 -0400 |
---|---|---|
committer | David Thompson <davet@gnu.org> | 2018-06-24 06:49:58 -0400 |
commit | f4a277dd225b71b5e90c7a165de9fc6e25395a73 (patch) | |
tree | f7260a82cb7a7c698203571c68eec56c11962e75 | |
parent | 58a4315656fd58284d0a562263c3d947e5992e81 (diff) |
Display proper backtraces when there is no game loop error handler.
* chickadee.scm (call-with-error-handling): Do not catch errors when
the error hook has nothing in it.
-rw-r--r-- | chickadee.scm | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/chickadee.scm b/chickadee.scm index 512aa4a..e2a705f 100644 --- a/chickadee.scm +++ b/chickadee.scm @@ -83,17 +83,16 @@ (newline port))) (define (call-with-error-handling thunk) - (let ((stack #f)) - (catch #t - thunk - (lambda (key . args) - (if (hook-empty? error-hook) - (apply throw key args) - (begin - (display-game-loop-error stack key args) - (run-hook error-hook stack key args)))) - (lambda (key . args) - (set! stack (make-stack #t 3)))))) + (if (hook-empty? error-hook) + (thunk) + (let ((stack #f)) + (catch #t + thunk + (lambda (key . args) + (display-game-loop-error stack key args) + (run-hook error-hook stack key args)) + (lambda (key . args) + (set! stack (make-stack #t 3))))))) (define-syntax-rule (run-hook* args ...) (call-with-error-handling |