fix handling of multiple values from c functions
authorAndy Wingo <wingo@pobox.com>
Thu, 25 Sep 2008 10:08:54 +0000 (12:08 +0200)
committerAndy Wingo <wingo@pobox.com>
Thu, 25 Sep 2008 10:08:54 +0000 (12:08 +0200)
* libguile/vm-i-system.c (mv-call, goto/cc): Fix handling of values
  returns from C or interpreted functions.

libguile/vm-i-system.c

index f2d8b65..20a0b98 100644 (file)
@@ -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;
     }