diff --git a/editline/key.c b/editline/key.c
index e1e64e328ad73ae61085c3abfa1507f095573d39..0dcdf4191ff9fe6fa888fe609bb51ed7136c43cc 100755
--- a/editline/key.c
+++ b/editline/key.c
@@ -124,7 +124,7 @@ key_end(EditLine *el)
 
 	el_free((ptr_t) el->el_key.buf);
 	el->el_key.buf = NULL;
-	/* XXX: provide a function to clear the keys */
+	node__put(el, el->el_key.map);
 	el->el_key.map = NULL;
 }
 
diff --git a/editline/term.c b/editline/term.c
index 738f63fbdc09abbddfe01c7a60be52925651e0ef..5fc5da466d4b0189a319cf7cbb44a39bfb424ea1 100755
--- a/editline/term.c
+++ b/editline/term.c
@@ -367,6 +367,8 @@ term_end(EditLine *el)
 	el->el_term.t_buf = NULL;
 	el_free((ptr_t) el->el_term.t_cap);
 	el->el_term.t_cap = NULL;
+	el_free((ptr_t) el->el_term.t_fkey);
+	el->el_term.t_fkey = NULL;
 	el->el_term.t_loc = 0;
 	el_free((ptr_t) el->el_term.t_str);
 	el->el_term.t_str = NULL;