Changeset 15459


Ignore:
Timestamp:
Sep 5, 2012, 9:48:56 AM (7 years ago)
Author:
gb
Message:

%%EQUALHASH processes final CDR.

Fixes ticket:1011 in trunk.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/level-0/l0-hash.lisp

    r15269 r15459  
    269269          ((and hash (neq hash key)) hash)  ; eql stuff
    270270          (t (typecase key
    271                 (simple-string (%pname-hash key (length key)))
     271                (simple-string (%string-hash 0 key (length key)))
    272272                (string
    273273                 (let ((length (length key)))
     
    278278                 (let ((hash 0))
    279279                   (do* ((i 0 (1+ i))
    280                          (list key (cdr list)))
    281                         ((or (not (consp list)) (> i 11))) ; who figured 11?
     280                         (done nil)
     281                         (list key (unless done (cdr list))))
     282                        ((or done (> i 11))) ; who figured 11?
    282283                     (declare (fixnum i))
    283                      (multiple-value-bind (h1 a1) (%%equalhash (%car list))
     284                     (multiple-value-bind (h1 a1) (%%equalhash
     285                                                   (if (atom list)
     286                                                     (progn
     287                                                       (setq done t)
     288                                                       list)
     289                                                     (%car list)))
    284290                       (when a1 (setq addressp t))
    285291                       ; fix the case of lists of same stuff in different order
     
    287293                       (setq hash (%i+ (rotate-hash-code hash) h1))
    288294                       ))
    289                    (values hash addressp)))
     295                   (values (mixup-hash-code hash) addressp)))
    290296                (pathname (%%equalphash key))
    291297                (t (%%eqlhash key)))))))
Note: See TracChangeset for help on using the changeset viewer.