From 87d24ece78d3747257ec7d97f5a0b3ab260b2b76 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Thu, 26 Jul 2012 10:38:01 -0600 Subject: [PATCH] more on `port-commit-peeked' and EOFs Continues/fixes commit 4c3dd00d498. --- collects/tests/racket/port.rktl | 3 ++- src/racket/src/port.c | 8 +++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/collects/tests/racket/port.rktl b/collects/tests/racket/port.rktl index 980b428cf5..4577b9e067 100644 --- a/collects/tests/racket/port.rktl +++ b/collects/tests/racket/port.rktl @@ -42,7 +42,8 @@ (test eof peek-char p) (test eof read-char p) (test #f sync/timeout 0 progress-evt5) - (test #f port-commit-peeked 1 progress-evt5 always-evt p))))))) + ;; it happens that a commit of EOF succeeds for tested ports: + (test #t port-commit-peeked 1 progress-evt5 always-evt p))))))) (test-hello-port (open-input-string "hello") #f) (test-hello-port (open-input-string "hello") #t) diff --git a/src/racket/src/port.c b/src/racket/src/port.c index 5a469fa51f..5977e707c1 100644 --- a/src/racket/src/port.c +++ b/src/racket/src/port.c @@ -2325,9 +2325,11 @@ intptr_t scheme_get_byte_string_unless(const char *who, unless_evt = SCHEME_PTR2_VAL(unless_evt); if (ip->pending_eof > 1) { - ip->pending_eof = 1; - if (ip->progress_evt) - post_progress(ip); + if (!peek) { + ip->pending_eof = 1; + if (ip->progress_evt) + post_progress(ip); + } gc = EOF; } else { /* Call port's get or peek function. But first, set up