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(a)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)))