summaryrefslogtreecommitdiff
path: root/libguile/vm-engine.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2011-01-27 10:49:51 +0100
committerAndy Wingo <wingo@pobox.com>2011-01-27 10:49:51 +0100
commitdce0252bf2b6b25ce825038472b2c3fa811a0164 (patch)
tree2920f0f769d24cf7fcf293bdeaba94e53b9726ce /libguile/vm-engine.c
parent4914fe1963ce5bee2ecd86f3a386dd0e23d3678b (diff)
downloadguile-dce0252bf2b6b25ce825038472b2c3fa811a0164.tar.gz
fix error handling in variable-ref family of instructions
* libguile/vm-i-system.c (variable-ref, variable-set, variable-bound?): Check that the argument is actually a variable. Thanks to Kevin Holmes for the report. * libguile/vm-engine.c (vm_engine): Error handling down here. * THANKS: Update.
Diffstat (limited to 'libguile/vm-engine.c')
-rw-r--r--libguile/vm-engine.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/libguile/vm-engine.c b/libguile/vm-engine.c
index 341dbc8a7..20d9ed2c8 100644
--- a/libguile/vm-engine.c
+++ b/libguile/vm-engine.c
@@ -153,6 +153,12 @@ VM_NAME (SCM vm, SCM program, SCM *argv, int nargs)
scm_list_1 (finish_args), SCM_BOOL_F);
goto vm_error;
+ vm_error_not_a_variable:
+ SYNC_ALL ();
+ scm_error (scm_arg_type_key, func_name, "Not a variable: ~S",
+ scm_list_1 (finish_args), scm_list_1 (finish_args));
+ goto vm_error;
+
vm_error_apply_to_non_list:
SYNC_ALL ();
scm_error (scm_arg_type_key, "apply", "Apply to non-list: ~S",