]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/files.el (safe-local-variable-p): Gracefully handle errors.
authorStefan Monnier <monnier@iro.umontreal.ca>
Thu, 11 Nov 2010 22:19:01 +0000 (17:19 -0500)
committerStefan Monnier <monnier@iro.umontreal.ca>
Thu, 11 Nov 2010 22:19:01 +0000 (17:19 -0500)
* lisp/emacs-lisp/bytecomp.el (byte-compile-warnings): Simplify the
safety predicate.

lisp/ChangeLog
lisp/emacs-lisp/bytecomp.el
lisp/files.el

index 88dc22a011d0ed2b101dbd24307de66d7442ed36..fef5fec5ce9604c8a8ed70a1f1e054dce29161ee 100644 (file)
@@ -1,5 +1,10 @@
 2010-11-11  Stefan Monnier  <monnier@iro.umontreal.ca>
 
+       * emacs-lisp/bytecomp.el (byte-compile-warnings): Simplify the
+       safety predicate.
+
+       * files.el (safe-local-variable-p): Gracefully handle errors.
+
        * emacs-lisp/smie.el (smie-rule-parent, smie-indent--rule):
        Use smie-indent-virtual when indenting relative to an opener.
        (smie-rule-separator): Use smie-rule-parent.
index 394169be99d7665c16284aa5d9fdb3271a6c5d5e..cdfac80ca78770482a333e19639b574a1ed1b5f3 100644 (file)
@@ -294,21 +294,12 @@ suppress.  For example, (not mapcar) will suppress warnings about mapcar."
                 (set :menu-tag "Some"
                       ,@(mapcar (lambda (x) `(const ,x))
                                 byte-compile-warning-types))))
-;;;###autoload(put 'byte-compile-warnings 'safe-local-variable 'byte-compile-warnings-safe-p)
 
 ;;;###autoload
-(defun byte-compile-warnings-safe-p (x)
-  "Return non-nil if X is valid as a value of `byte-compile-warnings'."
-  (or (booleanp x)
-      (and (listp x)
-           (if (eq (car x) 'not) (setq x (cdr x))
-             t)
-          (equal (mapcar
-                  (lambda (e)
-                    (when (memq e byte-compile-warning-types)
-                      e))
-                  x)
-                 x))))
+(put 'byte-compile-warnings 'safe-local-variable
+     (lambda (v)
+       (or (symbolp v)
+           (null (delq nil (mapcar (lambda (x) (not (symbolp x))) v))))))
 
 (defun byte-compile-warning-enabled-p (warning)
   "Return non-nil if WARNING is enabled, according to `byte-compile-warnings'."
index 0664bfd3844198bec8a57024156dbe300b422400..4901c3872cd57d172eab361f79bb544793fae1dc 100644 (file)
@@ -3134,7 +3134,10 @@ It is safe if any of these conditions are met:
    evaluates to a non-nil value with VAL as an argument."
   (or (member (cons sym val) safe-local-variable-values)
       (let ((safep (get sym 'safe-local-variable)))
-        (and (functionp safep) (funcall safep val)))))
+        (and (functionp safep)
+             ;; If the function signals an error, that means it
+             ;; can't assure us that the value is safe.
+             (with-demoted-errors (funcall safep val))))))
 
 (defun risky-local-variable-p (sym &optional ignored)
   "Non-nil if SYM could be dangerous as a file-local variable.