From 0d07b0164ad45e934f0b8b949dba2dd686cdcf78 Mon Sep 17 00:00:00 2001 From: Juan Jose Garcia Ripoll Date: Sun, 8 Jul 2012 00:12:39 +0200 Subject: [PATCH] When removing a SETF definition, we cannot drop the pair, because it may be used by some compiled code. --- src/c/assignment.d | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/c/assignment.d b/src/c/assignment.d index 9e04bb580..554eb2cbd 100644 --- a/src/c/assignment.d +++ b/src/c/assignment.d @@ -98,8 +98,14 @@ ecl_rem_setf_definition(cl_object sym) ECL_WITH_GLOBAL_ENV_WRLOCK_BEGIN(the_env) { cl_object pair = ecl_gethash_safe(sym, cl_core.setf_definitions, ECL_NIL); if (!Null(pair)) { - ECL_RPLACA(pair, ECL_NIL); + ECL_RPLACA(pair, make_setf_function_error(sym)); + ECL_RPLACD(pair, ECL_NIL); + /* + FIXME: This leaks resources + We actually cannot remove it, because some compiled + code might be using it! ecl_remhash(sym, cl_core.setf_definitions); + */ } } ECL_WITH_GLOBAL_ENV_WRLOCK_END; }