From 664b95465dde533e2c23b994ac11a6984d56e8dd Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Mon, 3 Oct 2011 06:13:53 -0600 Subject: [PATCH] fix potential refcount bug In the unlikely case that a receiving place ends while a message is being sent. --- src/racket/src/place.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/racket/src/place.c b/src/racket/src/place.c index b9bb19d69b..58bf96eac0 100644 --- a/src/racket/src/place.c +++ b/src/racket/src/place.c @@ -2679,7 +2679,7 @@ static void place_async_send(Scheme_Place_Async_Channel *ch, Scheme_Object *uo) ch->wakeup_signal = NULL; for (i = 0; i < size; i++) { Scheme_Place_Object *o2 = (Scheme_Place_Object *)SCHEME_VEC_ELS(v)[i]; - if (o2 && o2->signal_handle != NULL) { + if (o2) { ch->wakeup_signal = (Scheme_Object *)o2; break; } @@ -2691,7 +2691,7 @@ static void place_async_send(Scheme_Place_Async_Channel *ch, Scheme_Object *uo) nv = GC_master_make_vector(size/2); for (i = 0; i < size; i++) { Scheme_Place_Object *o2 = (Scheme_Place_Object *)SCHEME_VEC_ELS(v)[i]; - if (o2 && o2->signal_handle != NULL) { + if (o2) { SCHEME_VEC_ELS(nv)[ncnt] = (Scheme_Object *)o2; ncnt++; }