[cmucl-ticket] [cmucl] #43: unread-char doesn't change file-position

cmucl cmucl-devel at common-lisp.net
Thu Mar 3 06:18:38 UTC 2011


#43: unread-char doesn't change file-position
---------------------+------------------------------------------------------
 Reporter:  rtoy     |       Owner:     
     Type:  defect   |      Status:  new
 Priority:  major    |   Milestone:     
Component:  Unicode  |     Version:  20b
 Keywords:           |  
---------------------+------------------------------------------------------
 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.

-- 
Ticket URL: <http://trac.common-lisp.net/cmucl/ticket/43>
cmucl <http://common-lisp.net/project/cmucl>
Cmucl is a high-performance, free Common Lisp implementation.


More information about the cmucl-ticket mailing list