diff --git a/ChangeLog b/ChangeLog index 70f869c..393bb85 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2013-03-14 Luís Oliveira + + Hide SWANK debugger frames on Allegro also when the error is + signalled within threads different from the SLIME REPL's. + E.g. (mp:process-run-function nil (lambda () (error "foo"))). + + * swank-allegro.lisp (find-topframe): look deeper than 11 + frames. Still looking no deeper than 30 frames in the unlikely + event that this function is invoked out of context with a very + large stack. + 2013-03-12 Helmut Eller * slime.el (slime-read-interactive-args): Use read-shell-command diff --git a/swank-allegro.lisp b/swank-allegro.lisp index ef286c0..cb6ffe0 100644 --- a/swank-allegro.lisp +++ b/swank-allegro.lisp @@ -169,11 +169,11 @@ (find-package :swank))) (top-frame (excl::int-newest-frame (excl::current-thread)))) (loop for frame = top-frame then (next-frame frame) - for name = (debugger:frame-name frame) for i from 0 - when (eq name magic-symbol) + while (and frame (< i 30)) + when (eq (debugger:frame-name frame) magic-symbol) return (next-frame frame) - until (= i 10) finally (return top-frame)))) + finally (return top-frame)))) (defun next-frame (frame) (let ((next (excl::int-next-older-frame frame)))