diff --git a/pkgs/racket-pkgs/racket-test/tests/racket/file.rktl b/pkgs/racket-pkgs/racket-test/tests/racket/file.rktl index 7f3223c32b..eb09e403ab 100644 --- a/pkgs/racket-pkgs/racket-test/tests/racket/file.rktl +++ b/pkgs/racket-pkgs/racket-test/tests/racket/file.rktl @@ -260,6 +260,14 @@ (err/rt-test (read-line (current-input-port) 8)) (err/rt-test (read-line (current-input-port) 'anyx)) +(when (file-exists? "/dev/zero") + ;; Make sure read-line is interruptable on a primitive port that + ;; has no line ending: + (define t (thread (lambda () (call-with-input-file* "/dev/zero" read-line)))) + (sleep 0.1) + (kill-thread t) + (test #t thread-dead? t)) + (arity-test open-input-file 1 1) (err/rt-test (open-input-file 8)) (err/rt-test (open-input-file "x" 8)) diff --git a/racket/src/racket/src/portfun.c b/racket/src/racket/src/portfun.c index edd397d264..9402fe311c 100644 --- a/racket/src/racket/src/portfun.c +++ b/racket/src/racket/src/portfun.c @@ -3261,6 +3261,8 @@ do_read_line (int as_bytes, const char *who, int argc, Scheme_Object *argv[]) } buf[i++] = ch; if (ch > 127) ascii = 0; + + SCHEME_USE_FUEL(1); } if (as_bytes) {