summaryrefslogtreecommitdiff
path: root/Lisp/weak-hash-tables.lisp
diff options
context:
space:
mode:
authorMatthias Benkard <code@mail.matthias.benkard.de>2008-02-11 19:47:27 +0100
committerMatthias Benkard <code@mail.matthias.benkard.de>2008-02-11 19:47:27 +0100
commit59460d1a4877f8b07cc91e045f07eb2c02bb8771 (patch)
tree758756ca81c5795f994e1d07f79169a17a7ef9ac /Lisp/weak-hash-tables.lisp
parent31cd0253d521f458da739ac0b3c545a32bfadf03 (diff)
Do not rely on the GC to remove entries of a weak hash table.
This patch finally makes Objective-CL not crash consistently on CLISP. darcs-hash:20d392bc8e5203efd20e3c57224c2b1338ecb8d9
Diffstat (limited to 'Lisp/weak-hash-tables.lisp')
-rw-r--r--Lisp/weak-hash-tables.lisp3
1 files changed, 3 insertions, 0 deletions
diff --git a/Lisp/weak-hash-tables.lisp b/Lisp/weak-hash-tables.lisp
index b016aa5..80b6100 100644
--- a/Lisp/weak-hash-tables.lisp
+++ b/Lisp/weak-hash-tables.lisp
@@ -33,6 +33,8 @@
;; Clean up.
(remhash key hash-table)))))
+ (setf (fdefinition 'weak-remhash) (fdefinition 'remhash))
+
(defun (setf weak-gethash) (value key hash-table)
(setf (gethash key hash-table)
(trivial-garbage:make-weak-pointer value))))
@@ -47,6 +49,7 @@
:test 'eql))
(setf (fdefinition 'weak-gethash) (fdefinition 'gethash))
+ (setf (fdefinition 'weak-remhash) (fdefinition 'remhash))
(defun (setf weak-gethash) (value key hash-table)
(setf (gethash key hash-table) value)))