summaryrefslogtreecommitdiff
path: root/test-suite/tests/hash.test
diff options
context:
space:
mode:
authorDavid Thompson <dthompson2@worcester.edu>2014-03-08 17:15:52 -0500
committerMark H Weaver <mhw@netris.org>2014-03-12 02:36:35 -0400
commitc6a2691fff2863209729aba5f54e3f874bbbf1c4 (patch)
tree0654b3b27eab98b055bc5c19f77d6ac4f5d1f533 /test-suite/tests/hash.test
parent3aecd36464b1d916991bcc57acd6ec42e1cabbdc (diff)
downloadguile-c6a2691fff2863209729aba5f54e3f874bbbf1c4.tar.gz
Test for deleted weak pairs in hash-for-each.
* libguile/hashtab.c (scm_internal_hash_for_each_handle): Test for deleted weak pairs. * test-suite/tests/hash.test: Add test case.
Diffstat (limited to 'test-suite/tests/hash.test')
-rw-r--r--test-suite/tests/hash.test12
1 files changed, 12 insertions, 0 deletions
diff --git a/test-suite/tests/hash.test b/test-suite/tests/hash.test
index 64d10bb38..4c21d7129 100644
--- a/test-suite/tests/hash.test
+++ b/test-suite/tests/hash.test
@@ -347,3 +347,15 @@
(pass-if (equal? 2 (hash-count (lambda (k v)
(string? v)) table)))))
+
+;;;
+;;; weak key hash table
+;;;
+
+(with-test-prefix "weak key hash table"
+ (pass-if "hash-for-each after gc"
+ (let ((table (make-weak-key-hash-table)))
+ (hashq-set! table (list 'foo) 'bar)
+ (gc)
+ ;; Iterate over deleted weak ref without crashing.
+ (unspecified? (hash-for-each (lambda (key value) key) table)))))