accept-from-string was giving me program stack overflow errors on clisp (checked 2.44.1 and 2.45). I tracked it down to an infinite loop apparently caused by a stream-peek-char method on string-input-editing-stream (see attached patch).
Mike Watters mike-cl@mwatters.net
(running on clisp 2.44.1):
CLIM-USER[2]> (accept-from-string 'integer "123")
*** - Lisp stack overflow. RESET CLIM-USER[3]>
Fix:
--- mcclim-cvs/presentation-defs.lisp 2009-01-20 14:12:18.000000000 -0800 +++ mcclim-local/presentation-defs.lisp 2009-01-20 17:27:27.000000000 -0800 @@ -991,10 +991,8 @@ (declare (ignore abort)))
(defmethod stream-peek-char ((stream string-input-editing-stream)) - (let ((char (read-char-no-hang stream nil nil))) - (when char - (unread-char char stream)) - (or char :eof))) + (or (stream-read-gesture stream :peek-p t) + :eof))
(defmethod stream-read-char-no-hang ((stream string-input-editing-stream)) (if (> (stream-scan-pointer stream) (length (stream-input-buffer stream)))