summaryrefslogtreecommitdiff
path: root/libguile/threads.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2011-12-01 23:31:50 +0100
committerAndy Wingo <wingo@pobox.com>2011-12-01 23:31:50 +0100
commitb2208d2e987759270c712e35c8164394a47a52aa (patch)
tree1edd39e74a266fc53c075d328696e8fbf33eba5b /libguile/threads.c
parent3dc9f41900a0e9f915da3aa1eea6e0fae829c40d (diff)
parent738c899e4c1ab9d25cfbcd1010f34e0cce400bca (diff)
downloadguile-b2208d2e987759270c712e35c8164394a47a52aa.tar.gz
Merge remote-tracking branch 'origin/stable-2.0'
Conflicts: configure.ac libguile/fluids.c libguile/gc.c libguile/gc.h libguile/objcodes.c libguile/procprop.c libguile/vm.c module/ice-9/psyntax-pp.scm module/ice-9/psyntax.scm
Diffstat (limited to 'libguile/threads.c')
-rw-r--r--libguile/threads.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/libguile/threads.c b/libguile/threads.c
index ec5001ff4..aeadcfe6d 100644
--- a/libguile/threads.c
+++ b/libguile/threads.c
@@ -477,7 +477,7 @@ static SCM scm_i_default_dynamic_state;
/* Run when a fluid is collected. */
void
-scm_i_reset_fluid (size_t n, SCM val)
+scm_i_reset_fluid (size_t n)
{
scm_i_thread *t;
@@ -488,7 +488,7 @@ scm_i_reset_fluid (size_t n, SCM val)
SCM v = SCM_I_DYNAMIC_STATE_FLUIDS (t->dynamic_state);
if (n < SCM_SIMPLE_VECTOR_LENGTH (v))
- SCM_SIMPLE_VECTOR_SET (v, n, val);
+ SCM_SIMPLE_VECTOR_SET (v, n, SCM_UNDEFINED);
}
scm_i_pthread_mutex_unlock (&thread_admin_mutex);
}
@@ -1001,6 +1001,7 @@ SCM_DEFINE (scm_call_with_new_thread, "call-with-new-thread", 1, 1, 0,
SCM_ASSERT (SCM_UNBNDP (handler) || scm_is_true (scm_procedure_p (handler)),
handler, SCM_ARG2, FUNC_NAME);
+ GC_collect_a_little ();
data.parent = scm_current_dynamic_state ();
data.thunk = thunk;
data.handler = handler;