emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] master e41e89d: define-ibuffer-filter: Discard wrong filte


From: Tino Calancha
Subject: [Emacs-diffs] master e41e89d: define-ibuffer-filter: Discard wrong filters
Date: Wed, 7 Dec 2016 13:07:15 +0000 (UTC)

branch: master
commit e41e89d128764c5a2205665ab70b3449c3014abf
Author: Tino Calancha <address@hidden>
Commit: Tino Calancha <address@hidden>

    define-ibuffer-filter: Discard wrong filters
    
    * lisp/ibuf-macs.el (define-ibuffer-filter): Do not store
    in 'ibuffer-filtering-qualifiers' a wrong filter (Bug#25042).
    * test/lisp/ibuffer-tests.el (ibuffer-test-Bug25042): Add test.
---
 lisp/ibuf-macs.el          |    9 +++++++--
 test/lisp/ibuffer-tests.el |   12 ++++++++++++
 2 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/lisp/ibuf-macs.el b/lisp/ibuf-macs.el
index 27e7af9..3c95f4c 100644
--- a/lisp/ibuf-macs.el
+++ b/lisp/ibuf-macs.el
@@ -302,8 +302,13 @@ bound to the current value of the filter.
                          qualifier))
         (ibuffer-update nil t))
        (push (list ',name ,description
-                  #'(lambda (buf qualifier)
-                      ,@body))
+                  (lambda (buf qualifier)
+                     (condition-case nil
+                         ,@body
+                       (error (ibuffer-pop-filter)
+                              (when (eq ',name 'predicate)
+                                (error "Wrong filter predicate: %S"
+                                       qualifier))))))
             ibuffer-filtering-alist)
        :autoload-end)))
 
diff --git a/test/lisp/ibuffer-tests.el b/test/lisp/ibuffer-tests.el
index 9fdaaf0..92ed101 100644
--- a/test/lisp/ibuffer-tests.el
+++ b/test/lisp/ibuffer-tests.el
@@ -126,5 +126,17 @@
         (and (buffer-live-p it) (kill-buffer it))))))
 
 
+(ert-deftest ibuffer-test-Bug25042 ()
+  "Test for http://debbugs.gnu.org/25042 ."
+  (ibuffer)
+  (let ((filters ibuffer-filtering-qualifiers))
+    (unwind-protect
+        (progn
+          (ignore-errors ; Mistyped `match-string' instead of `string-match'.
+            (setq ibuffer-filtering-qualifiers nil)
+            (ibuffer-filter-by-predicate '(match-string "foo" (buffer-name))))
+          (should-not ibuffer-filtering-qualifiers))
+      (setq ibuffer-filtering-qualifiers filters))))
+
 (provide 'ibuffer-tests)
 ;; ibuffer-tests.el ends here



reply via email to

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