[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Chicken-janitors] #1293: Locatives get moved around causing hash tables
From: |
Chicken Trac |
Subject: |
[Chicken-janitors] #1293: Locatives get moved around causing hash tables to lose them |
Date: |
Fri, 27 May 2016 06:43:10 -0000 |
#1293: Locatives get moved around causing hash tables to lose them
---------------------------------------------+--------------------
Reporter: sjamaan | Owner:
Type: defect | Status: new
Priority: major | Milestone: 4.12.0
Component: core libraries | Version: 4.10.x
Keywords: srfi-69, hash tables, locatives |
---------------------------------------------+--------------------
As [[http://paste.call-
cc.org/paste?id=982e393227789ab1a6c471ada66e729eb28f83b8|pointed out by
John Croisant]]:
{{{#!scm
;; Even though the filler slots are not used, if you remove any of
;; them, the hash of the instance will change after GC, causing the
;; hash table lookup to fail.
(use srfi-69 lolevel)
(define table (make-hash-table test: eq? hash: eq?-hash))
(define-record-type box
(make-box contents)
box?
;; Remove or comment out any of the next three lines:
(filler1 box-filler1)
(filler2 box-filler2)
(filler3 box-filler3)
(contents box-contents))
(define my-box (make-box (make-locative "foo")))
(hash-table-set! table my-box #t)
(printf "before gc, hash table contains ~S? ~S~N"
my-box
(hash-table-exists? table my-box))
(gc)
(printf "after gc, hash table contains ~S? ~S~N"
my-box
(hash-table-exists? table my-box))
(printf "hash table as alist: ~S~N"
(hash-table->alist table))
}}}
--
Ticket URL: <http://bugs.call-cc.org/ticket/1293>
CHICKEN Scheme <http://www.call-cc.org/>
CHICKEN Scheme is a compiler for the Scheme programming language.
- [Chicken-janitors] #1293: Locatives get moved around causing hash tables to lose them,
Chicken Trac <=