From c7388f9fa8fff4ae626a6315fd135dec2f3e7c55 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Mon, 16 Dec 2019 11:54:28 -0700 Subject: [PATCH] places: repair clean-up after serialize failure --- pkgs/racket-test/tests/racket/place-channel-fd3.rkt | 10 ++++++---- racket/src/racket/src/place.c | 6 +++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/pkgs/racket-test/tests/racket/place-channel-fd3.rkt b/pkgs/racket-test/tests/racket/place-channel-fd3.rkt index a4dde9dd3f..31da3fbdf3 100644 --- a/pkgs/racket-test/tests/racket/place-channel-fd3.rkt +++ b/pkgs/racket-test/tests/racket/place-channel-fd3.rkt @@ -8,18 +8,20 @@ (for/list ((n (in-naturals))) (place-channel-get in)))) - (define i + (define fds (case mode [("tcp") (define PORT 12346) (define listener (tcp-listen PORT 100 #t)) (define-values (i o) (tcp-connect "127.0.0.1" PORT)) - i] + (list i o)] [else - (current-input-port)])) + (list (current-input-port) + (current-output-port))])) + (for ((n (in-naturals))) (printf "sending port ~a\n" n) - (place-channel-put out i))) + (place-channel-put out fds))) (module+ test (require racket/system diff --git a/racket/src/racket/src/place.c b/racket/src/racket/src/place.c index 3956e9fdf1..c35295a833 100644 --- a/racket/src/racket/src/place.c +++ b/racket/src/racket/src/place.c @@ -820,7 +820,7 @@ static void bad_place_message2(Scheme_Object *so, Scheme_Object *o, int can_rais if (v) { if (SCHEME_VEC_ELS(v)[0]) { l = SCHEME_VEC_ELS(v)[0]; - while (SCHEME_PAIRP(l)) { + while (SCHEME_RPAIRP(l)) { rktio_fd_close_transfer(unbox_fd(SCHEME_CAR(l))); l = SCHEME_CDR(l); SCHEME_USE_FUEL(1); @@ -828,7 +828,7 @@ static void bad_place_message2(Scheme_Object *so, Scheme_Object *o, int can_rais } if (SCHEME_VEC_ELS(v)[1]) { l = SCHEME_VEC_ELS(v)[1]; - while (SCHEME_PAIRP(l)) { + while (SCHEME_RPAIRP(l)) { rktio_fd_close_transfer(unbox_fd(SCHEME_CAR(l))); l = SCHEME_CDR(l); SCHEME_USE_FUEL(1); @@ -841,7 +841,7 @@ static void bad_place_message2(Scheme_Object *so, Scheme_Object *o, int can_rais static void push_duped_fd(Scheme_Object **fd_accumulators, intptr_t slot, rktio_fd_transfer_t *dupfdt) { Scheme_Object *tmp; - Scheme_Vector *v; + Scheme_Vector *v; if (fd_accumulators) { if (!*fd_accumulators) { tmp = scheme_make_vector(2, scheme_null);