Chisheng Huang wrote:
>
>>This will be probably be very difficult to track down unless you can
>>find a smaller example that triggers it.
>
>
> Here is a much easier way to get a stack overflow:
> 1. Save the following in a file, say bug.lisp:
>
> ;; this is the actual code from gforeign.lisp with (GDK:FLUSH)
> ;; replaced by (PRINT ...) and (FINISH-OUTPUT)
> ;;
> (let ((interactive-eval #'ext:interactive-eval))
> (declare (function interactive-eval))
> (defun ext:interactive-eval (form)
> (let ((values (multiple-value-list (funcall interactive-eval form))))
> (print "call gdk flush")
> (finish-output)
> (values-list values))))
>
FWIW, the following works for me. I do not know what the problem is.
Ray
-- Attached file included as plaintext by Listar --
-- File: i-eval.lisp
(eval-when (compile load eval)
(defvar old-interactive-eval #'ext:interactive-eval))
(defun ext:interactive-eval (form)
(let ((values (multiple-value-list (funcall old-interactive-eval form))))
(print "call gdk flush")
(finish-output)
(values-list values)))