From 271d33ee3f9967cf1c59331be02f4b45740b28bb Mon Sep 17 00:00:00 2001 From: jjgarcia Date: Thu, 19 Jun 2008 15:03:28 +0000 Subject: [PATCH] Slightly leaner code for searching environment --- src/c/interpreter.d | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/c/interpreter.d b/src/c/interpreter.d index 3b0f69e5a..827c5980f 100644 --- a/src/c/interpreter.d +++ b/src/c/interpreter.d @@ -283,10 +283,13 @@ internal_lex_env_error() } static cl_object -ecl_lex_env_get_record(register cl_object env, register int s) { - for (; s-- > 0; env = CDR(env)); - if (Null(env)) internal_lex_env_error(); - return CAR(env); +ecl_lex_env_get_record(register cl_object env, register int s) +{ + do { + if (Null(env)) internal_lex_env_error(); + if (s-- == 0) return ECL_CONS_CAR(env); + env = ECL_CONS_CDR(env); + } while(1); } #define ecl_lex_env_get_var(env,x) ECL_CONS_CDR(ecl_lex_env_get_record(env,x))