From dcfa4d2247b42c87d7eaf081efb6384bb30d007c Mon Sep 17 00:00:00 2001 From: Juan Jose Garcia Ripoll Date: Sun, 7 Jun 2009 18:27:44 +0200 Subject: [PATCH] Forgot to save the interpreter environment before unoptimized calls (found out by JCB) --- src/CHANGELOG | 4 ++++ src/c/interpreter.d | 1 + 2 files changed, 5 insertions(+) diff --git a/src/CHANGELOG b/src/CHANGELOG index 57671325a..5ffab6bda 100644 --- a/src/CHANGELOG +++ b/src/CHANGELOG @@ -105,6 +105,10 @@ ECL 9.5: - ecl_import_current_thread() now properly stores the thread handle in the process object and can be called multiple times for the same thread. + - When performing unoptimized function calls, the interpreter did not save + actual value of the lexical environment, thus preventing the debugger from + inspecting it (fixed by JCB). + ;;; Local Variables: *** ;;; mode:text *** ;;; fill-column:79 *** diff --git a/src/c/interpreter.d b/src/c/interpreter.d index 3393b5402..412331779 100644 --- a/src/c/interpreter.d +++ b/src/c/interpreter.d @@ -449,6 +449,7 @@ ecl_interpret(cl_object frame, cl_object env, cl_object bytecodes) cl_object frame = (cl_object)&frame_aux; frame_aux.size = narg; frame_aux.base = the_env->stack_top - narg; + SETUP_ENV(the_env); AGAIN: if (reg0 == OBJNULL || reg0 == Cnil) { FEundefined_function(x);