From: Nikodemus S. <de...@us...> - 2008-02-05 04:09:28
|
Update of /cvsroot/sbcl/sbcl/src/code In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv5436/src/code Modified Files: xset.lisp Log Message: 1.0.14.20: XSET used EQ instead of EQL for comparison * Fix it, and add a test specifically for MEMBER using EQL. Index: xset.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/code/xset.lisp,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- xset.lisp 9 Dec 2007 14:37:23 -0000 1.1 +++ xset.lisp 5 Feb 2008 04:09:23 -0000 1.2 @@ -59,10 +59,10 @@ (size (xset-list-size xset))) (if (listp data) (if (< size +xset-list-size-limit+) - (unless (member elt data :test #'eq) + (unless (member elt data :test #'eql) (setf (xset-list-size xset) (1+ size) (xset-data xset) (cons elt data))) - (let ((table (make-hash-table :size (* 2 size) :test #'eq))) + (let ((table (make-hash-table :size (* 2 size) :test #'eql))) (setf (gethash elt table) t) (dolist (x data) (setf (gethash x table) t)) @@ -82,7 +82,7 @@ (defun xset-member-p (elt xset) (let ((data (xset-data xset))) (if (listp data) - (member elt data :test #'eq) + (member elt data :test #'eql) (gethash elt data)))) (defun xset-members (xset) @@ -105,7 +105,7 @@ (let ((data (xset-data lookup))) (map-xset (if (listp data) (lambda (elt) - (when (member elt data :test #'eq) + (when (member elt data :test #'eql) (add-to-xset elt intersection))) (lambda (elt) (when (gethash elt data) @@ -119,7 +119,7 @@ (map-xset (if (listp data) (lambda (elt) - (unless (member elt data :test #'eq) + (unless (member elt data :test #'eql) (return-from xset-subset-p nil))) (lambda (elt) (unless (gethash elt data) |