place channels: clean up allocation arena after failed message

This commit is contained in:
Matthew Flatt 2019-12-19 06:31:42 -07:00
parent ffa6d2ef74
commit 31636870a9

View File

@ -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 */