In HASH-TABLE/COUNT, rehash the table if it needs it -- this is the
authorChris Hanson <org/chris-hanson/cph>
Thu, 29 Sep 2005 19:15:54 +0000 (19:15 +0000)
committerChris Hanson <org/chris-hanson/cph>
Thu, 29 Sep 2005 19:15:54 +0000 (19:15 +0000)
only way to guarantee an accurate count.

v7/src/runtime/hashtb.scm

index 25ce6e06010308ec472abb11379dd202681d07c4..2924b9e205ad52a277aa7cf27152f56a31067476 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: hashtb.scm,v 1.32 2005/01/23 17:53:05 cph Exp $
+$Id: hashtb.scm,v 1.33 2005/09/29 19:15:54 cph Exp $
 
 Copyright 1990,1991,1993,1994,1995,2003 Massachusetts Institute of Technology
 Copyright 2004,2005 Massachusetts Institute of Technology
@@ -225,7 +225,13 @@ USA.
 
 (define (hash-table/count table)
   (guarantee-hash-table table 'HASH-TABLE/COUNT)
-  (table-count table))
+  (let loop ()
+    (let ((count (table-count table)))
+      (if (table-needs-rehash? table)
+         (begin
+           (rehash-table! table)
+           (loop))
+         count))))
 
 (define (hash-table/size table)
   (guarantee-hash-table table 'HASH-TABLE/SIZE)