From 45dc6b347d81a580bbcaefe25007cbbe8bb9841d Mon Sep 17 00:00:00 2001 From: Michael Gran Date: Thu, 14 Oct 2010 18:27:41 -0700 Subject: [PATCH] Unresolved var errors don't work for top-level vars * libguile/vm-i-system.c (toplevel_ref, long_toplevel_ref): modified --- libguile/vm-i-system.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/libguile/vm-i-system.c b/libguile/vm-i-system.c index 62b5e1a9c..bc0c9620d 100644 --- a/libguile/vm-i-system.c +++ b/libguile/vm-i-system.c @@ -330,19 +330,20 @@ VM_DEFINE_INSTRUCTION (26, variable_bound, "variable-bound?", 0, 1, 1) VM_DEFINE_INSTRUCTION (27, toplevel_ref, "toplevel-ref", 1, 0, 1) { unsigned objnum = FETCH (); - SCM what; + SCM what, resolved; CHECK_OBJECT (objnum); what = OBJECT_REF (objnum); - if (!SCM_VARIABLEP (what)) + if (!SCM_VARIABLEP (what)) { SYNC_REGISTER (); - what = resolve_variable (what, scm_program_module (program)); - if (!VARIABLE_BOUNDP (what)) + resolved = resolve_variable (what, scm_program_module (program)); + if (!VARIABLE_BOUNDP (resolved)) { finish_args = scm_list_1 (what); goto vm_error_unbound; } + what = resolved; OBJECT_SET (objnum, what); } @@ -352,22 +353,23 @@ VM_DEFINE_INSTRUCTION (27, toplevel_ref, "toplevel-ref", 1, 0, 1) VM_DEFINE_INSTRUCTION (28, long_toplevel_ref, "long-toplevel-ref", 2, 0, 1) { - SCM what; + SCM what, resolved; unsigned int objnum = FETCH (); objnum <<= 8; objnum += FETCH (); CHECK_OBJECT (objnum); what = OBJECT_REF (objnum); - if (!SCM_VARIABLEP (what)) + if (!SCM_VARIABLEP (what)) { SYNC_REGISTER (); - what = resolve_variable (what, scm_program_module (program)); - if (!VARIABLE_BOUNDP (what)) + resolved = resolve_variable (what, scm_program_module (program)); + if (!VARIABLE_BOUNDP (resolved)) { finish_args = scm_list_1 (what); goto vm_error_unbound; } + what = resolved; OBJECT_SET (objnum, what); }