diff --git a/pkgs/racket-pkgs/racket-test/tests/racket/place-no-writer.rkt b/pkgs/racket-pkgs/racket-test/tests/racket/place-no-writer.rkt new file mode 100644 index 0000000000..3da5ba5bc9 --- /dev/null +++ b/pkgs/racket-pkgs/racket-test/tests/racket/place-no-writer.rkt @@ -0,0 +1,20 @@ +#lang racket/base +(require racket/place) + +;; Check that syncing on a place (as opposed to place channel) +;; known to have no writers will fail to sync (as opposed to +;; returning the place itself, for example, which was the bug +;; that triggered this test). + +(define (main) + (for ([i 10]) + (displayln i) + (define p (place pch (void))) + (place-wait p) + (collect-garbage) + (define v (sync/timeout 0 p)) + (when v + (error "failed: " v)))) + +(module+ main (main)) +(module+ test (main)) \ No newline at end of file diff --git a/racket/src/racket/src/place.c b/racket/src/racket/src/place.c index 6824e9fe61..0979d6be3c 100644 --- a/racket/src/racket/src/place.c +++ b/racket/src/racket/src/place.c @@ -3487,10 +3487,7 @@ static int place_channel_ready(Scheme_Object *so, Scheme_Schedule_Info *sinfo) { return 1; } - - if (no_writers) - return 1; /* wake up to discover that we can give up */ - + return 0; }