avoid bad interior pointer

This commit is contained in:
Matthew Flatt 2012-03-29 08:57:12 -06:00
parent dfca7d89d9
commit ebb72d40e8

View File

@ -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();