From 31636870a91484cb1169d2e8ff05a97455315e0f Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Thu, 19 Dec 2019 06:31:42 -0700 Subject: [PATCH] place channels: clean up allocation arena after failed message --- racket/src/racket/src/place.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/racket/src/racket/src/place.c b/racket/src/racket/src/place.c index c35295a833..52782328e9 100644 --- a/racket/src/racket/src/place.c +++ b/racket/src/racket/src/place.c @@ -2503,7 +2503,10 @@ static Scheme_Object *places_serialize(Scheme_Object *so, void **msg_memory, Sch new_so = do_places_deep_copy(so, mzPDC_COPY, 0, master_chain, invalid_object, delayed_err, delayed_errno, delayed_errkind); tmp = GC_finish_message_allocator(); - (*msg_memory) = tmp; + if (!new_so) + GC_destroy_orphan_msg_memory(tmp); + else + (*msg_memory) = tmp; if (!new_so && !*delayed_err && SCHEME_CHAPERONEP(*invalid_object)) { /* try again after removing chaperones */