chicken-janitors
[Top][All Lists]
Advanced

[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.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]