summaryrefslogtreecommitdiff
path: root/libguile/vm-i-system.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2008-09-25 12:08:54 +0200
committerAndy Wingo <wingo@pobox.com>2008-09-25 12:08:54 +0200
commitcd829416b2bdf19e95a58b48587acebac876f7dd (patch)
tree24c0bd5887dadf760cca6446e1534ba3286687d3 /libguile/vm-i-system.c
parentff1592a106f9a28dcbbd77939db0b2c1f9b27064 (diff)
downloadguile-cd829416b2bdf19e95a58b48587acebac876f7dd.tar.gz
fix handling of multiple values from c functions
* libguile/vm-i-system.c (mv-call, goto/cc): Fix handling of values returns from C or interpreted functions.
Diffstat (limited to 'libguile/vm-i-system.c')
-rw-r--r--libguile/vm-i-system.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/libguile/vm-i-system.c b/libguile/vm-i-system.c
index f2d8b659c..20a0b980d 100644
--- a/libguile/vm-i-system.c
+++ b/libguile/vm-i-system.c
@@ -770,7 +770,7 @@ VM_DEFINE_INSTRUCTION (mv_call, "mv-call", 3, -1, 1)
POP (values);
values = scm_struct_ref (values, SCM_INUM0);
len = scm_length (values);
- while (!SCM_NULLP (values))
+ for (; !SCM_NULLP (values); values = SCM_CDR (values))
PUSH (SCM_CAR (values));
PUSH (len);
ip += offset;
@@ -884,7 +884,7 @@ VM_DEFINE_INSTRUCTION (goto_cc, "goto/cc", 0, 1, 1)
SCM values;
values = scm_struct_ref (cont, SCM_INUM0);
nvalues = scm_ilength (values);
- while (!SCM_NULLP (values))
+ for (; !SCM_NULLP (values); values = SCM_CDR (values))
PUSH (SCM_CAR (values));
goto vm_return_values;
}