mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 03:40:34 +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:
parent
b8d8f8b929
commit
8dd01861a9
2 changed files with 9 additions and 7 deletions
|
@ -319,10 +319,10 @@ scm_i_make_with_fluids (size_t n, SCM *fluids, SCM *vals)
|
|||
/* Ensure that there are no duplicates in the fluids set -- an N^2 operation,
|
||||
but N will usually be small, so perhaps that's OK. */
|
||||
{
|
||||
size_t i, j = n;
|
||||
size_t i, j;
|
||||
|
||||
while (j--)
|
||||
for (i = 0; i < j; i++)
|
||||
for (j = n; j--;)
|
||||
for (i = j; i--;)
|
||||
if (scm_is_eq (fluids[i], fluids[j]))
|
||||
{
|
||||
vals[i] = vals[j]; /* later bindings win */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue