Mark H Weaver writes: > David Kastrup writes: > >> (use-modules (rnrs bytevectors) (rnrs io ports)) >> (let ((port (open-bytevector-input-port >> (string->utf8 "Blablabla\nBlablabla\n")))) >> (seek port 13 SEEK_SET) >> (format #t "~c ~d\n" (peek-char port) >> (ftell port))) >> ;; Outputs b 3 but should output b 13 >> >> This is using >> guile (GNU Guile) 2.0.11 >> Packaged by Debian (2.0.11-deb+1-1) > > Ouch :-( > > The problem is that r6rs-ports.c:bip_seek assumes that > c_port->read_{buf,pos,end} point to the original bytevector, and fail to > handle the case where it points to a "putback" buffer. > > Note that (ftell port) is equivalent to (seek port 0 SEEK_CUR). I've attached a preliminary patch set to fix this bug and some others. I'm going to hold off on pushing them to stable-2.0 until I've added tests and convinced myself that I haven't introduced any new problems. Mark