A shorter test that shows a problem with file position: (with-open-file (stream "/tmp/io_test.tmp" :element-type '(unsigned-byte 8) :direction :io :if-exists :supersede :if-does-not-exist :create) (write-byte 10 stream) (file-position stream 0) (read-byte stream) (let ((before (file-position stream))) (write-byte 1 stream) (values before (file-position stream))))
Returns 1 1, should have been 1 2.
On Thu, Jun 30, 2016 at 4:05 AM, Vibhu Mohindra vibhu.mohindra@gmail.com wrote:
Hallo,
I've got a file open for IO. Only writing to it works okay. But if I also try to read from it, then things start going wrong. I've attached a test case that should return NIL but instead raises an error in ABCL (1.3.3, on OSX).
The problem is with the call to #'write-sequence on line 21.
In fact, from some other tests, I believe that replacing that call to #'write-sequence with a call to a function that does the same thing but by repeatedly setting the file-position and writing a byte, for each byte in the sequence, fixes things. That means something about #'write-sequence is broken.
Maybe I misunderstand the file level functions in Common Lisp, and my test doesn't use them correctly. However, the test passes in: CLISP, CCL, CMUCL, SBCL, ECL. So I thought I'd report this, just in case it is a bug in ABCL.
Also, removing the last three lines of code in #'main, which read one byte, makes the test run without errors.
Vibhu