fix eval.c:find logic

This commit is contained in:
yoyo 2024-09-12 19:01:13 +09:00
parent 9a12d2ac9f
commit 07300eff7c

12
eval.c
View File

@ -65,16 +65,12 @@ clone(Object *p)
static Object* static Object*
find(Object *env, Object *obj) find(Object *env, Object *obj)
{ {
Object *res = 0;
for(Object *cur=env->sp->car; cur!=&Nil; cur=cur->up) for(Object *cur=env->sp->car; cur!=&Nil; cur=cur->up)
for(Object *p=cur->local; p!=&Nil; p=cdr(p)) for(Object *p=cur->local; p!=&Nil; p=cdr(p))
if(strequal(obj, car(car(p)))){ if(strequal(obj, car(car(p))))
res = p; return clone(cdr(car(p)));
break; error("not exist variable");
} return 0;
if(res == 0)
error("not exist variable");
return clone(cdr(car(res)));
} }
static Object* static Object*