author | Camm Maguire <camm@debian.org> | 2014年09月13日 13:24:45 -0400 |
---|---|---|
committer | Camm Maguire <camm@debian.org> | 2014年09月13日 13:24:45 -0400 |
commit | e3098be7982cfbb0cb161bdc6bdc57d1d628f2e9 (patch) | |
tree | 9ff2280f551f25e2fba6088951eca1154458ad56 | |
parent | 6207d25f369899453b6e090356fb7173435de6fe (diff) | |
download | gcl-export-no-interrupts.tar.gz |
-rwxr-xr-x | gcl/clcs/gcl_clcs_restart.lisp | 2 | ||||
-rwxr-xr-x | gcl/clcs/gcl_clcs_top_patches.lisp | 9 |
diff --git a/gcl/clcs/gcl_clcs_restart.lisp b/gcl/clcs/gcl_clcs_restart.lisp index 05e135f6e..49f16e824 100755 --- a/gcl/clcs/gcl_clcs_restart.lisp +++ b/gcl/clcs/gcl_clcs_restart.lisp @@ -64,7 +64,7 @@ (defvar *kcl-top-restarts* nil) (defun make-kcl-top-restart (quit-tag) - (make-restart :name 'abort + (make-restart :name 'gcl-top-restart :function #'(lambda () (throw (car (list quit-tag)) quit-tag)) :report-function #'(lambda (stream) diff --git a/gcl/clcs/gcl_clcs_top_patches.lisp b/gcl/clcs/gcl_clcs_top_patches.lisp index c5b4e99f4..a08474c6b 100755 --- a/gcl/clcs/gcl_clcs_top_patches.lisp +++ b/gcl/clcs/gcl_clcs_top_patches.lisp @@ -124,8 +124,13 @@ (error "Console interrupt -- cannot continue."))) (defun clcs-break-quit (&optional (level 0)) - (let ((abort (nth level (reverse *abort-restarts*)))) - (when abort (invoke-restart-interactively abort))) + (let* ((ar (reverse *abort-restarts*)) + (tr (find-restart 'conditions::gcl-top-restart)) + (ar (if tr (cons tr ar) ar)) + (abort (nth level ar))) + (if abort + (invoke-restart-interactively abort) + (format *debug-io* "No abort restart is active.~%"))) (break-current)) (setq conditions::*debugger-function* 'break-level) |