From 903eb9ec322a0343f6e6f980c56b184c5436ac90 Mon Sep 17 00:00:00 2001 From: Kevin Tew Date: Wed, 30 Nov 2011 18:08:06 -0700 Subject: [PATCH] Added place_obj->dead to detect places that terminate normally --- src/racket/src/place.c | 4 +++- src/racket/src/schpriv.h | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/racket/src/place.c b/src/racket/src/place.c index 23604c5bbe..be7733cc5d 100644 --- a/src/racket/src/place.c +++ b/src/racket/src/place.c @@ -225,6 +225,7 @@ Scheme_Object *scheme_make_place_object() { place_obj->so.type = scheme_place_object_type; mzrt_mutex_create(&place_obj->lock); place_obj->die = 0; + place_obj->dead = 0; place_obj->refcount = 1; place_obj->pbreak = 0; place_obj->result = 1; @@ -579,7 +580,7 @@ static int place_deadp(Scheme_Object *place) { { mzrt_mutex_lock(place_obj->lock); - dead = place_obj->die; + dead = place_obj->die | place_obj->dead; mzrt_mutex_unlock(place_obj->lock); } @@ -2193,6 +2194,7 @@ static void place_set_result(Scheme_Object *result) scheme_signal_received_at(place_object->parent_signal_handle); place_object->parent_signal_handle = NULL; place_object->signal_handle = NULL; + place_object->dead = 1; mzrt_mutex_unlock(place_object->lock); } diff --git a/src/racket/src/schpriv.h b/src/racket/src/schpriv.h index 5f87b77637..6ad3dd53bc 100644 --- a/src/racket/src/schpriv.h +++ b/src/racket/src/schpriv.h @@ -3728,6 +3728,7 @@ typedef struct Scheme_Place_Object { mzrt_sema *pause; #endif char die; + char dead; char pbreak; char pausing; intptr_t refcount;