I am using BBDB with VM, and have found occasional failures with the error (wrong-type-argument stringp nil) inside BBDB-UPDATE-RECORDS.
AFAICT this problem occurs when I get the occasional mailing list email that tries to be nicely privacy-protecting. The headers for such an email look like this: ... and this causes a call to bbdb-update-records that looks like this: bbdb-update-records(((authors "From" (nil "[EMAIL PROTECTED]")) (recipients "To" (nil nil))) nil nil) I *believe* a proper solution is to modify bbdb-update-records to check that there's a net address before trying to invoke regexp-quote on it. Here's a proposed patch (look for the WHEN test with a comment by rpg...): (defun bbdb-update-records (addrs auto-create-p offer-to-create) "Returns the records corresponding to the list of addresses ADDRS, creating or modifying them as necessary. A record will be created if AUOT-CREATE-P is non-nil or if OFFER-TO-CREATE is true and the user confirms the creation. The variable `bbdb/gnus-update-records-mode' controls what actions are performed and it might override `bbdb-update-records-mode'. When hitting C-g once you will not be asked any more for new people listed in this message, but it will search only for existing records. When hitting C-g again it will stop scanning." (setq auto-create-p (bbdb-invoke-hook-for-value auto-create-p)) (let ((bbdb-records (bbdb-records)) (processed-addresses 0) (bbdb-offer-to-create (or offer-to-create (eq 'prompt auto-create-p))) (bbdb-update-records-mode (if offer-to-create 'annotating (if (listp bbdb-update-records-mode) (eval bbdb-update-records-mode) bbdb-update-records-mode))) (addrslen (length addrs)) (bbdb-update-address-class nil) (bbdb-update-address-header nil) records hits) (while addrs (setq bbdb-address (car addrs) bbdb-update-address-class (car bbdb-address) bbdb-update-address-header (cadr bbdb-address) bbdb-address (caddr bbdb-address)) (condition-case nil (progn (setq hits (cond ((eq bbdb-update-records-mode 'annotating) (list;; search might return a list (bbdb-annotate-message-sender bbdb-address t (or offer-to-create;; force create auto-create-p) 'bbdb-prompt-for-create))) ((eq bbdb-update-records-mode 'searching) ;; search for records having this net ;; first make sure there's a net there... ;; [2004/12/16:rpg] (when (cadr bbdb-address) (let ((net (concat "^" (regexp-quote (cadr bbdb-address)) "$")) ;; there is no case for nets (bbdb-case-fold-search t)) (bbdb-search bbdb-records nil nil net))))) processed-addresses (+ processed-addresses 1)) (when (and (not bbdb-silent-running) (not bbdb-gag-messages) (not (eq bbdb-offer-to-create 'quit)) (= 0 (% processed-addresses 5))) (let ((mess (format "Hit C-g to stop BBDB from %s. %d of %d addresses processed." bbdb-update-records-mode processed-addresses addrslen))) (if (featurep 'xemacs) (bbdb-display-message 'progress mess) (message mess))) (sit-for 0))) ;; o.k. there was a quit signal so how should we proceed now? (quit (cond ((eq bbdb-update-records-mode 'annotating) (setq bbdb-update-records-mode 'searching)) ((eq bbdb-update-records-mode 'searching) nil) ((eq bbdb-update-records-mode 'next) (setq bbdb-update-records-mode 'annotating)) (t (setq bbdb-update-records-mode 'quit))) nil)) (while hits ;; people should be listed only once so we use add-to-list (if (car hits) (add-to-list 'records (car hits))) (setq hits (cdr hits))) (setq addrs (cdr addrs))) ;; add-to-list adds at the front so we have to reverse the list in order ;; to reflect the order of the records as they appear in the headers. (setq records (nreverse records)) (if (not (or bbdb-silent-running bbdb-gag-messages (not records) (> (length records) 1))) ;; maybe this should just be omitted, really. (message "Updating of BBDB records finished")) records)) This seems to fix the bug, AFAICT. [I know I should probably do the bbdb-submit-bug-report thing, but honestly, I'm not thrilled to use a function that could be sending arbitrary chunks of private information around to be shared with the full internet in perpetuity...] ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://productguide.itmanagersjournal.com/ _______________________________________________ [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/bbdb-info BBDB Home Page: http://bbdb.sourceforge.net/