summaryrefslogtreecommitdiff
path: root/libguile/threads.c
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2013-06-17 14:43:58 -0400
committerMark H Weaver <mhw@netris.org>2013-06-17 14:51:51 -0400
commit10454601e03a20cc121d06d8004f96bb2a3b6fb5 (patch)
tree351bbe958dc7a2b12aa235cf69d77331ff7c1f10 /libguile/threads.c
parentb16bf64639d457f9cfe8dc7bf80464cd2b86a622 (diff)
downloadguile-10454601e03a20cc121d06d8004f96bb2a3b6fb5.tar.gz
Fix bug in remqueue in threads.c when removing last element.
Reported and debugged by Andrew Gaylard <ag@computer.org>. * libguile/threads.c (remqueue): When removing the last element from a queue with more than one element, set (car q) to the previous element. * THANKS: Thank Andrew Gaylard.
Diffstat (limited to 'libguile/threads.c')
-rw-r--r--libguile/threads.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/libguile/threads.c b/libguile/threads.c
index c5947915e..8cbe1e22f 100644
--- a/libguile/threads.c
+++ b/libguile/threads.c
@@ -327,7 +327,7 @@ remqueue (SCM q, SCM c)
if (scm_is_eq (p, c))
{
if (scm_is_eq (c, SCM_CAR (q)))
- SCM_SETCAR (q, SCM_CDR (c));
+ SCM_SETCAR (q, scm_is_eq (prev, q) ? SCM_EOL : prev);
SCM_SETCDR (prev, SCM_CDR (c));
/* GC-robust */