From 8cff7f54dcdaff5a87dce5d419b15a21d5884f48 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Wed, 23 Oct 2013 15:06:24 +0200 Subject: [PATCH] RTL VM: Fix LOCAL_REF, LOCAL_SET for unsigned indices * libguile/vm-engine.c (LOCAL_REF, LOCAL_SET): Fix so to work with unsigned 0. Previously subtracting 1 was making the index wrap around. --- libguile/vm-engine.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libguile/vm-engine.c b/libguile/vm-engine.c index e2f8745eb..cf359c969 100644 --- a/libguile/vm-engine.c +++ b/libguile/vm-engine.c @@ -628,8 +628,8 @@ VM_NAME (SCM vm, SCM program, SCM *argv, int nargs) case opcode: #endif -#define LOCAL_REF(i) SCM_FRAME_VARIABLE (fp, (i) - 1) -#define LOCAL_SET(i,o) SCM_FRAME_VARIABLE (fp, (i) - 1) = o +#define LOCAL_REF(i) SCM_FRAME_VARIABLE ((fp - 1), i) +#define LOCAL_SET(i,o) SCM_FRAME_VARIABLE ((fp - 1), i) = o #define VARIABLE_REF(v) SCM_VARIABLE_REF (v) #define VARIABLE_SET(v,o) SCM_VARIABLE_SET (v, o)