emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/ebdb 606d49a 6/8: Fix logic of singleton fields


From: Eric Abrahamsen
Subject: [elpa] externals/ebdb 606d49a 6/8: Fix logic of singleton fields
Date: Mon, 6 Jan 2020 14:39:42 -0500 (EST)

branch: externals/ebdb
commit 606d49a215622ee337e73d3177a0f23bc1a25508
Author: Eric Abrahamsen <address@hidden>
Commit: Eric Abrahamsen <address@hidden>

    Fix logic of singleton fields
    
    * ebdb.el (ebdb-record-insert-field): When we retrieve the "existing"
    field, we actually get a list of fields.
---
 ebdb.el | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/ebdb.el b/ebdb.el
index a2b09d6..efd6561 100644
--- a/ebdb.el
+++ b/ebdb.el
@@ -2898,12 +2898,16 @@ by the field, or else raising the error 
`ebdb-related-unfound'.")
                                        &optional _slot)
   "Prevent RECORD from having more than one instance of FIELD."
   (let ((existing (ebdb-record-field record (eieio-object-class field))))
+    ;; Using a class name with `ebdb-record-field' always returns a
+    ;; list.
     (when existing
-      (ebdb-record-delete-field record existing))
+      (dolist (f existing)
+       (ebdb-record-delete-field record f)))
     (condition-case nil
        (cl-call-next-method)
-      ;; Put the old one back if something goes wrong.
-      (error (ebdb-record-insert-field record existing)))))
+      ;; Put the old one back if something goes wrong.  There should
+      ;; only be one field instance, so we blindly use `car'.
+      (error (ebdb-record-insert-field record (car existing))))))
 
 (cl-defmethod ebdb-field-image-get ((field ebdb-field-image) (record 
ebdb-record))
   "Return the image for image field FIELD.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]