Ticket #43 (closed defect: fixed)
unread-char doesn't change file-position
| Reported by: | rtoy | Owned by: | |
|---|---|---|---|
| Priority: | major | Milestone: | |
| Component: | Unicode | Version: | 20b |
| Keywords: | Cc: |
Description
This test is from Douglas Crosher, on the maxima mailing list.
(with-open-file (ostream "ctest.txt" :direction :output
:external-format #+clisp "utf-8" #-clisp :utf-8)
(dotimes (i 1000)
(write-char (code-char #x1234) ostream)))
(with-open-file (stream "ctest.txt" :direction :input
:external-format #+clisp "utf-8" #-clisp :utf-8)
(let ((p0 (file-position stream))
(ch (read-char stream)))
(unread-char ch stream)
(let ((p0* (file-position stream)))
(if (eql p0* p0) "Ok" "Broken"))))
Cmucl returns "Broken" because p0 = 0 but p0* = 2. I think unread-char didn't update everything needed by our unicode stream buffers.
Change History
Note: See
TracTickets for help on using
tickets.
