1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-16 08:40:19 +02:00

Fix later-bindings-win logic in with-fluids.

Based on a patch by David Kastrup <dak@gnu.org>.
Fixes <http://bugs.gnu.org/13843>.

* libguile/fluids.c (scm_i_make_with_fluids): Reverse direction of inner
  loop that checks for duplicates, to properly handle more than two
  bindings to the same fluid.
This commit is contained in:
Mark H Weaver 2013-02-28 18:43:09 -05:00
parent b8d8f8b929
commit 8dd01861a9
2 changed files with 9 additions and 7 deletions

View file

@ -85,15 +85,17 @@
(pass-if "last value wins"
(compile '(with-fluids ((a 1)
(a 2))
(eqv? (fluid-ref a) 2))
(a 2)
(a 3))
(eqv? (fluid-ref a) 3))
#:env (current-module)))
(pass-if "remove the duplicate, not the last binding"
(compile '(with-fluids ((a 1)
(a 2)
(b 3))
(eqv? (fluid-ref b) 3))
(a 3)
(b 4))
(eqv? (fluid-ref b) 4))
#:env (current-module)))
(pass-if "original value restored"