fixing memory leak when redefining macros

(was generating a new env cell instead of overwriting the old one)
This commit is contained in:
Alex Shinn 2010-06-23 22:04:38 +09:00
parent 9a052ddb7c
commit 565ed858fe

2
eval.c
View file

@ -665,7 +665,7 @@ static sexp analyze_bind_syntax (sexp ls, sexp eval_ctx, sexp bind_ctx) {
if (sexp_synclop(name) && sexp_env_global_p(sexp_context_env(bind_ctx))) if (sexp_synclop(name) && sexp_env_global_p(sexp_context_env(bind_ctx)))
name = sexp_synclo_expr(name); name = sexp_synclo_expr(name);
mac = sexp_make_macro(eval_ctx, proc, sexp_context_env(bind_ctx)); mac = sexp_make_macro(eval_ctx, proc, sexp_context_env(bind_ctx));
sexp_env_push(eval_ctx, sexp_context_env(bind_ctx), tmp, name, mac); sexp_env_define(eval_ctx, sexp_context_env(bind_ctx), name, mac);
} else { } else {
res = (sexp_exceptionp(proc) ? proc res = (sexp_exceptionp(proc) ? proc
: sexp_compile_error(eval_ctx, "non-procedure macro:", proc)); : sexp_compile_error(eval_ctx, "non-procedure macro:", proc));