On 15 Mar 2007, at 16:43, Phlex wrote:
Hello,
I beleive I found a bug in your cl-prevalence package. It is in the src/serialization.lisp file. Here is what i think is the correct (serialize-sexp-internal hash- table ? ?) method.
(defmethod serialize-sexp-internal ((object hash-table) stream serialization-state) (let ((id (known-object-id serialization-state object))) (if id (progn (write-string "(:REF . " stream) (prin1 id stream) (write-string ")" stream)) (let ((count (hash-table-count object))) (setf id (set-known-object serialization-state object)) (write-string "(:HASH-TABLE " stream) (prin1 id stream) (write-string " :TEST " stream) (print-symbol (hash-table-test object) stream) (write-string " :SIZE " stream) (prin1 (hash-table-size object) stream) (write-string " :REHASH-SIZE " stream) (prin1 (hash-table-rehash-size object) stream) (write-string " :REHASH-THRESHOLD " stream) (prin1 (hash-table-rehash-threshold object) stream) (unless (zerop count) (write-string " :ENTRIES (" stream) (maphash #'(lambda (key value) (write-string " (" stream) (serialize-sexp-internal key stream serialization-state) (write-string " . " stream) (serialize-sexp-internal value stream serialization-state) (princ ")" stream)) object) (write-string " )" stream)) ;;this line was added (write-string " )" stream))))) ;;a closing parenthesis was removed from the output string
I hope this helps, and thanks for your work on this library.
Sacha De Vos
Thanks for noticing/reporting/fixing this bug, Sascha! I applied your change, committed it and re-released the tarball.
Sven
cl-prevalence-devel@common-lisp.net