summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikael Djurfeldt <djurfeldt@nada.kth.se>2000-03-29 01:57:25 +0000
committerMikael Djurfeldt <djurfeldt@nada.kth.se>2000-03-29 01:57:25 +0000
commit0e551780ec9fae468d44bb29470b3a16fd94b9ed (patch)
tree8e36b3d547749e33699b5c7d0c15090d58aa09e5
parentad1a269029dc2cb201829e9886b5609a81334b48 (diff)
downloadguile-0e551780ec9fae468d44bb29470b3a16fd94b9ed.tar.gz
* coop-threads.c (scm_call_with_new_thread, scm_spawn_thread):
Changed SETCDR --> SET_CELL_WORD_1. * coop-threads.c (scheme_launch_thread): Set word 1 of handle to 0 when thread dies.
-rw-r--r--libguile/coop-threads.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/libguile/coop-threads.c b/libguile/coop-threads.c
index 81f227ad5..f7f03a4f4 100644
--- a/libguile/coop-threads.c
+++ b/libguile/coop-threads.c
@@ -213,6 +213,7 @@ scheme_launch_thread (void *p)
(scm_catch_handler_t) scheme_handler_bootstrip,
&data,
(SCM_STACKITEM *) &thread);
+ SCM_SET_CELL_WORD_1 (thread, 0);
scm_thread_count--;
SCM_DEFER_INTS;
}
@@ -268,7 +269,7 @@ scm_call_with_new_thread (SCM argl)
argl variable may not exist in memory when the thread starts. */
t = coop_create (scheme_launch_thread, (void *) argl);
t->data = SCM_ROOT_STATE (root);
- SCM_SETCDR (thread, t);
+ SCM_SET_CELL_WORD_1 (thread, t);
scm_thread_count++;
/* Note that the following statement also could cause coop_yield.*/
SCM_ALLOW_INTS;
@@ -359,7 +360,7 @@ scm_spawn_thread (scm_catch_body_t body, void *body_data,
t = coop_create (c_launch_thread, (void *) data);
t->data = SCM_ROOT_STATE (root);
- SCM_SETCDR (thread, t);
+ SCM_SET_CELL_WORD_1 (thread, t);
scm_thread_count++;
/* Note that the following statement also could cause coop_yield.*/
SCM_ALLOW_INTS;