From ebb72d40e80da0d1b41d6210089944c77ca7d5e1 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Thu, 29 Mar 2012 08:57:12 -0600 Subject: [PATCH] avoid bad interior pointer --- src/racket/src/place.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/racket/src/place.c b/src/racket/src/place.c index 486412d81d..5d5e6279bb 100644 --- a/src/racket/src/place.c +++ b/src/racket/src/place.c @@ -3129,10 +3129,12 @@ static void cleanup_msg_memmory(void *thread) { static Scheme_Object *scheme_place_async_try_receive(Scheme_Place_Async_Channel *ch) { Scheme_Object *msg = NULL; Scheme_Thread *p = scheme_current_thread; + GC_CAN_IGNORE void **msg_memory; BEGIN_ESCAPEABLE(cleanup_msg_memmory, p); - msg = scheme_place_async_try_receive_raw(ch, &p->place_channel_msg_in_flight); + msg = scheme_place_async_try_receive_raw(ch, &msg_memory); if (msg) { - msg = scheme_places_deserialize(msg, p->place_channel_msg_in_flight); + p->place_channel_msg_in_flight = msg_memory; + msg = scheme_places_deserialize(msg, msg_memory); p->place_channel_msg_in_flight = NULL; } END_ESCAPEABLE();