Comment 2 for bug 690408

Revision history for this message
Martin Saturka (kvutza) wrote :

The bug is still present, try e.g.

(with-open-file (s "test")
(let ((cs (make-concatenated-stream (make-string-input-stream "?") s)))
(read-char-no-hang cs)
(read-char-no-hang cs)
(read-char-no-hang cs)
(read-char-no-hang cs)
))

with "test" being filename in the current directory, containing e.g. string "123456";

It works well in other lisp implementations I've tested, though it pretends end of file for all SBCL versions I've tried (incl. current git version); calling e.g. (read cs) works well, thus it seems to be just the "read-char-no-hang" issue. And when both parts of the concatenated stream are created by make-string-input-stream, it works well even for read-char-no-hang calls.

Notice that this way (that is using concatenated stream based on a string and a file stream, with calling read-char-no-hang) is used e.g. in Maxima (for batches including ?-based calls to lisp), and it breaks on it there. Thus it is important for a nontrivial amount of users to have this fixed.