diff --git a/module/language/elisp/boot.el b/module/language/elisp/boot.el index c1b91177f..a5346d577 100644 --- a/module/language/elisp/boot.el +++ b/module/language/elisp/boot.el @@ -400,11 +400,13 @@ ;;; Property lists (defun %plist-member (plist property test) - (catch 'loop - (while plist - (if (funcall test (car plist) property) - (throw 'loop (cdr plist)) - (setq plist (cddr plist)))))) + (cond + ((null plist) nil) + ((consp plist) + (if (funcall test (car plist) property) + (cdr plist) + (%plist-member (cdr (cdr plist)) property test))) + (t (signal 'wrong-type-argument `(listp ,plist))))) (defun %plist-get (plist property test) (car (%plist-member plist property test)))