[Openmcl-devel] peek-char advances the file-position

Pascal J. Bourguignon pjb at informatimago.com
Wed Apr 4 05:54:15 PDT 2012

Gary Byers <gb at clozure.com> writes:

> On Wed, 4 Apr 2012, Pascal J. Bourguignon wrote:
> [Calling PEEK-CHAR on a FILE-STREAM changes the value returned by FILE-POSITION.]
> A simple test case:
> (with-open-file (f "some-file")
>   (loop
>     (let* ((before (file-position f))
>            (ch (peek-char nil f nil nil))
>            (after (file-position f)))
>       (when (null ch) (return))
>       (unless (eql before after)
>         (error "PEEK-CHAR changed file position from ~s to ~s." before after))
>       (read-char f)))
> errors on the first iteration (and would show that the file position changes
> on every iteration if the test was changed to simply print that fact.)  That's
> been present for a few years, and there doesn't seem to be anything very subtle
> about it.
> That should be fixed in the trunk in r15292 and (after a bit of smoke-testing)
> should probably be propagated to the 1.8 branch as well.

Indeed.  In my case I use (peek-char t …), not (peek-char nil …), and
there it seems the bad result is more random.

__Pascal Bourguignon__                     http://www.informatimago.com/
A bad day in () is better than a good day in {}.

More information about the Openmcl-devel mailing list