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.
This commit is contained in:
Tino Calancha 2016-12-07 22:02:54 +09:00
parent 53fefb55c5
commit e41e89d128
2 changed files with 19 additions and 2 deletions

View file

@ -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)))

View file

@ -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