Always push a new env cell on define unless the previous cell was undefined.

This commit is contained in:
Alex Shinn 2015-09-13 21:49:58 +09:00
parent da845032e5
commit 7c333f43da

3
eval.c
View file

@ -141,8 +141,7 @@ sexp sexp_env_cell_define (sexp ctx, sexp env, sexp key,
} }
#endif #endif
for (ls=sexp_env_bindings(env); sexp_pairp(ls); ls=sexp_env_next_cell(ls)) for (ls=sexp_env_bindings(env); sexp_pairp(ls); ls=sexp_env_next_cell(ls))
if (sexp_car(ls) == key) { if (sexp_car(ls) == key && sexp_cdr(ls) == SEXP_UNDEF) {
if (sexp_cdr(ls) == SEXP_UNDEF)
sexp_cdr(ls) = value; sexp_cdr(ls) = value;
return ls; return ls;
} }