Bug 828582

Summary: bbdb fails with "invalid function (\' (let*..." in emacs-24 on fedora 17
Product: [Fedora] Fedora Reporter: John Heidemann <johnh>
Component: emacs-bbdbAssignee: Jonathan Underwood <jonathan.underwood>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 17CC: jonathan.underwood
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2012-06-15 12:22:59 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description John Heidemann 2012-06-04 22:30:37 UTC
Description of problem:
bbdb fails with "invalid function (\' (let*..." in emacs-24 on fedora 17
whenever you look at a new message.
(I'm using mh-e.)
This error prevents bbbd from updating records from new messages.

Version-Release number of selected component (if applicable):
emacs-bbdb-2.35-6.fc17.noarch
with 
emacs-24.0.95-1.fc17.x86_64


How reproducible:
Every time.

Steps to Reproduce:
1. show mail in emacs (perhaps using mh-e)
2. scroll to new message
3. see error in emacs *Messasges*
  
Actual results:
The following backtrace appears when one does (setq debug-on-error t):


Debugger entered--Lisp error: (invalid-function (\` (let* ((attrs (file-attributes ((\, message)))) (status-time (nth 6 attrs)) (status-time-2 (cdr status-time)) (inode (nth 10 attrs))) (logxor (if (integerp inode) inode (car inode)) (car status-time) (if (integerp status-time-2) status-time-2 (car status-time-2))))))
  ((\` (let* ((attrs (file-attributes ((\, message)))) (status-time (nth 6 attrs)) (status-time-2 (cdr status-time)) (inode (nth 10 attrs))) (logxor (if (integerp inode) inode (car inode)) (car status-time) (if (integerp status-time-2) status-time-2 (car status-time-2))))))
  (lambda (message) "Return a (numeric) key for MESSAGE" ((\` (let* ((attrs (file-attributes (...))) (status-time (nth 6 attrs)) (status-time-2 (cdr status-time)) (inode (nth 10 attrs))) (logxor (if (integerp inode) inode (car inode)) (car status-time) (if (integerp status-time-2) status-time-2 (car status-time-2)))))))(buffer-file-name)
  (bbdb/mh-cache-key buffer-file-name)
  (let ((msg (bbdb/mh-cache-key buffer-file-name)) records record) (if (eq msg 0) (setq msg nil)) (setq records (bbdb-message-cache-lookup msg)) (if records (car records) (let ((from (bbdb/mh-get-field "^From[ 	]*:"))) (if (or (string= "" from) (string-match (bbdb-user-mail-names) (mail-strip-quoted-names from))) (progn (setq from (bbdb/mh-get-field "^To[ 	]*:")) (if (or (string= "" from) (string-match ... ...)) (setq from nil)))) (if from (setq record (bbdb-annotate-message-sender from t (or (bbdb-invoke-hook-for-value bbdb/mail-auto-create-p) offer-to-create) (or offer-to-create (bbdb-invoke-hook-for-value bbdb/mail-auto-create-p))))) (if (and msg record) (bbdb-encache-message msg (list record))) record)))
  (if bbdb-use-pop-up (bbdb/mh-pop-up-bbdb-buffer offer-to-create) (let ((msg (bbdb/mh-cache-key buffer-file-name)) records record) (if (eq msg 0) (setq msg nil)) (setq records (bbdb-message-cache-lookup msg)) (if records (car records) (let ((from (bbdb/mh-get-field "^From[ 	]*:"))) (if (or (string= "" from) (string-match (bbdb-user-mail-names) (mail-strip-quoted-names from))) (progn (setq from (bbdb/mh-get-field "^To[ 	]*:")) (if (or ... ...) (setq from nil)))) (if from (setq record (bbdb-annotate-message-sender from t (or ... offer-to-create) (or offer-to-create ...)))) (if (and msg record) (bbdb-encache-message msg (list record))) record))))
  (save-excursion (and mh-show-buffer (set-buffer mh-show-buffer)) (if bbdb-use-pop-up (bbdb/mh-pop-up-bbdb-buffer offer-to-create) (let ((msg (bbdb/mh-cache-key buffer-file-name)) records record) (if (eq msg 0) (setq msg nil)) (setq records (bbdb-message-cache-lookup msg)) (if records (car records) (let ((from (bbdb/mh-get-field "^From[ 	]*:"))) (if (or (string= "" from) (string-match ... ...)) (progn (setq from ...) (if ... ...))) (if from (setq record (bbdb-annotate-message-sender from t ... ...))) (if (and msg record) (bbdb-encache-message msg (list record))) record)))))
  bbdb/mh-update-record()
  run-hooks(mh-show-hook)
  mh-show-msg(nil)
  mh-show(nil)
  emh-show()
  call-interactively(emh-show nil nil)



Expected results:

No error.

Additional info:

Google reports a fix from NetBSD:
http://gnats.netbsd.org/44963

This patch seems to suppress the error in Fedora 17:

RCS file: misc/bbdb/patches/patch-ab
diff -N misc/bbdb/patches/patch-ab
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ misc/bbdb/patches/patch-ab	13 May 2011 13:43:06 -0000
@@ -0,0 +1,19 @@
+$NetBSD$
+
+To avoid being flagged by emacs-24.0.50
+ bbdb-mhe.el:56:41:Error: Invalid function: 
+ bbdb-mhe.el:38:30:Warning: `(\` (let* ((attrs (file-attributes ((\,
+	..... (ommitted)
+     status-time-2)))))' is a malformed function
+
+--- work/bbdb-2.34/lisp/bbdb-mhe.el.orig	2011-04-02 20:42:13.000000000 +0900
++++ lisp/bbdb-mhe.el	2011-04-02 20:42:28.000000000 +0900
+@@ -37,7 +37,7 @@
+ 
+ (defmacro bbdb/mh-cache-key (message)
+   "Return a (numeric) key for MESSAGE"
+-  (`(let* ((attrs (file-attributes (, message)))
++  ( ` (let* ((attrs (file-attributes (, message)))
+            (status-time (nth 6 attrs))
+            (status-time-2 (cdr status-time))
+

Comment 1 Fedora Update System 2012-06-05 10:12:30 UTC
emacs-bbdb-2.35-7.fc17 has been submitted as an update for Fedora 17.
https://admin.fedoraproject.org/updates/emacs-bbdb-2.35-7.fc17

Comment 2 Jonathan Underwood 2012-06-05 10:29:55 UTC
Thanks for the report John. I'll be orphaning the emacs-bbdb package in the near future as I no longer use it and so can't routinely test it. If you're a Fedora packager, please consider becoming a co-maintainer for the package. If you're not, you might consider becoming a packager:

http://fedoraproject.org/wiki/Join_the_package_collection_maintainers

Comment 3 Fedora Update System 2012-06-07 02:44:29 UTC
Package emacs-bbdb-2.35-7.fc17:
* should fix your issue,
* was pushed to the Fedora 17 testing repository,
* should be available at your local mirror within two days.
Update it with:
# su -c 'yum update --enablerepo=updates-testing emacs-bbdb-2.35-7.fc17'
as soon as you are able to.
Please go to the following url:
https://admin.fedoraproject.org/updates/FEDORA-2012-8955/emacs-bbdb-2.35-7.fc17
then log in and leave karma (feedback).

Comment 4 Fedora Update System 2012-06-15 12:22:59 UTC
emacs-bbdb-2.35-7.fc17 has been pushed to the Fedora 17 stable repository.  If problems still persist, please make note of it in this bug report.