summaryrefslogtreecommitdiff
path: root/libguile/vm-i-system.c
diff options
context:
space:
mode:
Diffstat (limited to 'libguile/vm-i-system.c')
-rw-r--r--libguile/vm-i-system.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/libguile/vm-i-system.c b/libguile/vm-i-system.c
index 16b74e2b6..62b5e1a9c 100644
--- a/libguile/vm-i-system.c
+++ b/libguile/vm-i-system.c
@@ -1575,11 +1575,12 @@ VM_DEFINE_INSTRUCTION (89, wind_fluids, "wind-fluids", 1, -1, 0)
unsigned n = FETCH ();
SCM wf;
- if (sp - 2*n < SCM_FRAME_UPPER_ADDRESS (fp))
- goto vm_error_stack_underflow;
-
SYNC_REGISTER ();
- wf = scm_i_make_with_fluids (n, sp + 1 - 2*n, sp + 1 - n);
+ sp -= 2 * n;
+ CHECK_UNDERFLOW ();
+ wf = scm_i_make_with_fluids (n, sp + 1, sp + 1 + n);
+ NULLSTACK (2 * n);
+
scm_i_swap_with_fluids (wf, dynstate);
scm_i_set_dynwinds (scm_cons (wf, scm_i_dynwinds ()));
NEXT;