From: Mattias EngdegÄrd Date: Fri, 16 Sep 2022 13:29:03 +0000 (+0200) Subject: Faster and more robust list-of-strings-p X-Git-Tag: emacs-29.0.90~1856^2~451 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=4da0fbdc82577da0583c8858a52f456beb23fd0e;p=emacs.git Faster and more robust list-of-strings-p * lisp/subr.el (list-of-strings-p): Speed up by a factor 4 (approx.) and don't crash on dotted lists. * test/lisp/subr-tests.el (test-list-of-strings-p): Extend test. --- diff --git a/lisp/subr.el b/lisp/subr.el index e8e8f1584b4..caea2b9f933 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -4028,8 +4028,9 @@ Otherwise, return nil." (defun list-of-strings-p (object) "Return t if OBJECT is nil or a list of strings." - (and (listp object) - (seq-every-p #'stringp object))) + (while (and (consp object) (stringp (car object))) + (setq object (cdr object))) + (null object)) (defun booleanp (object) "Return t if OBJECT is one of the two canonical boolean values: t or nil. diff --git a/test/lisp/subr-tests.el b/test/lisp/subr-tests.el index 38966cea585..347981e8185 100644 --- a/test/lisp/subr-tests.el +++ b/test/lisp/subr-tests.el @@ -1163,7 +1163,8 @@ final or penultimate step during initialization.")) (should (list-of-strings-p nil)) (should (list-of-strings-p '("a" "b"))) (should-not (list-of-strings-p ["a" "b"])) - (should-not (list-of-strings-p '("a" nil "b")))) + (should-not (list-of-strings-p '("a" nil "b"))) + (should-not (list-of-strings-p '("a" "b" . "c")))) (provide 'subr-tests) ;;; subr-tests.el ends here