~ chicken-core (chicken-5) 298c932c16c9187551e579d7ac74511a1f95786a
commit 298c932c16c9187551e579d7ac74511a1f95786a Author: Christian Kellermann <ckeen@pestilenz.org> AuthorDate: Wed Apr 10 21:14:27 2013 +0200 Commit: Peter Bex <peter.bex@xs4all.nl> CommitDate: Wed Apr 10 21:28:39 2013 +0200 Fetch a new char before peeking it on custom input ports. This fixes a regression introduced by commit 7fdc4b41b4a7b2a78afd33f73bc5d2ea07e6d60c which returns eof chars upon broken up strings. This patch tries to fetch a new character before calling peek. Also the buffer position must not advance on a real eof condition. Signed-off-by: Christian Kellermann <ckeen@pestilenz.org> Signed-off-by: Peter Bex <peter.bex@xs4all.nl> diff --git a/posixunix.scm b/posixunix.scm index 6d1fe512..15cb5353 100644 --- a/posixunix.scm +++ b/posixunix.scm @@ -1350,10 +1350,10 @@ EOF (letrec ([this-port (make-input-port (lambda () ; read-char + (when (fx>= bufpos buflen) + (fetch)) (let ([ch (peek)]) - #; ; Allow increment since overflow is far, far away (unless (eof-object? ch) (set! bufpos (fx+ bufpos 1))) - (set! bufpos (fx+ bufpos 1)) ch ) ) (lambda () ; char-ready? (or (fx< bufpos buflen)Trap