summaryrefslogtreecommitdiff
path: root/module/system/foreign.scm
diff options
context:
space:
mode:
Diffstat (limited to 'module/system/foreign.scm')
-rw-r--r--module/system/foreign.scm8
1 files changed, 5 insertions, 3 deletions
diff --git a/module/system/foreign.scm b/module/system/foreign.scm
index fe068a471..4fb9f6628 100644
--- a/module/system/foreign.scm
+++ b/module/system/foreign.scm
@@ -290,10 +290,12 @@ which does the reverse. PRINT must name a user-defined object printer."
(define wrap
;; Use a weak hash table to preserve pointer identity, i.e.,
;; PTR1 == PTR2 <-> (eq? (wrap PTR1) (wrap PTR2)).
- (let ((ptr->obj (make-weak-value-hash-table 3000)))
+ (let ((ptr->obj (make-weak-value-hash-table
+ #:hash hash #:equal? equal?
+ #:initial-size 3000)))
(lambda (ptr)
- (or (hash-ref ptr->obj ptr)
+ (or (weak-value-hash-table-ref ptr->obj ptr)
(let ((o (%wrap ptr)))
- (hash-set! ptr->obj ptr o)
+ (weak-value-hash-table-set! ptr->obj ptr o)
o)))))
(set-record-type-printer! type-name print)))))))