[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#13838: [PATCH] Fix duplicate removal of with-fluids
From: |
David Kastrup |
Subject: |
bug#13838: [PATCH] Fix duplicate removal of with-fluids |
Date: |
Thu, 28 Feb 2013 10:40:16 +0100 |
The following code displayed #f:
(define a (make-fluid))
(define b (make-fluid))
(with-fluids ((a 3) (a 1) (b 2))
(display (fluid-ref b)))
In general, removing any duplicate that is not right at the end of the
(remaining) list will exhibit this problem. The fluids and vals
arguments are modified in situ; the previous code only modified vals.
---
libguile/fluids.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/libguile/fluids.c b/libguile/fluids.c
index f1c09cb..bd59e26 100644
--- a/libguile/fluids.c
+++ b/libguile/fluids.c
@@ -326,6 +326,8 @@ scm_i_make_with_fluids (size_t n, SCM *fluids, SCM *vals)
{
vals[i] = vals[j]; /* later bindings win */
n--;
+ fluids[j] = fluids[n];
+ vals[j] = vals[n];
break;
}
}
--
1.7.10.4
- bug#13838: [PATCH] Fix duplicate removal of with-fluids,
David Kastrup <=