From e5736d393a55b94ae05fb8c09c5b5e6e44b21e85 Mon Sep 17 00:00:00 2001 From: Marius Gerbershagen Date: Sun, 2 Aug 2020 19:09:56 +0200 Subject: [PATCH] bytecmp: don't treat load time forms as toplevel forms This prevents top level forms from being evaluated in the middle of another top level form. --- src/c/compiler.d | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/c/compiler.d b/src/c/compiler.d index 222a22eb..a7053f7b 100644 --- a/src/c/compiler.d +++ b/src/c/compiler.d @@ -2469,6 +2469,7 @@ compile_with_load_time_forms(cl_env_ptr env, cl_object form, int flags) cl_object p, forms_list = cl_nreverse(c_env->load_time_forms); c_env->load_time_forms = ECL_NIL; p = forms_list; + c_env->lexical_level++; /* don't treat load time forms as toplevel forms */ do { cl_object r = ECL_CONS_CAR(p); cl_object constant = pop(&r); @@ -2481,6 +2482,7 @@ compile_with_load_time_forms(cl_env_ptr env, cl_object form, int flags) ECL_RPLACA(p, ecl_make_fixnum(loc)); p = ECL_CONS_CDR(p); } while (p != ECL_NIL); + c_env->lexical_level--; p = forms_list; do { cl_index loc = ecl_fixnum(ECL_CONS_CAR(p));