summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2012-10-13 21:39:56 -0400
committerStefan Monnier <monnier@iro.umontreal.ca>2012-10-13 21:39:56 -0400
commit5046ef67ca8b5a2eab769b4a6e486ae060b5df13 (patch)
tree52966f3e20b13f107db949c98bd4fabd8e811a54 /lisp
parent8336c6b3c5a971104437ca1939fae3ab998c486a (diff)
downloademacs-5046ef67ca8b5a2eab769b4a6e486ae060b5df13.tar.gz
* lisp/emacs-lisp/gv.el (if): Don't use closures in non-lexical-binding code.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog4
-rw-r--r--lisp/emacs-lisp/gv.el3
2 files changed, 6 insertions, 1 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index d58eb0bfbbf..6c9fe7c4b47 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,7 @@
+2012-10-14 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * emacs-lisp/gv.el (if): Don't use closures in non-lexical-binding code.
+
2012-10-13 Chong Yidong <cyd@gnu.org>
* textmodes/ispell.el (ispell-pdict-save): If flyspell-mode is
diff --git a/lisp/emacs-lisp/gv.el b/lisp/emacs-lisp/gv.el
index 7858c183e4b..1a30d67fbbc 100644
--- a/lisp/emacs-lisp/gv.el
+++ b/lisp/emacs-lisp/gv.el
@@ -358,7 +358,8 @@ The return value is the last VAL in the list.
(put 'if 'gv-expander
(lambda (do test then &rest else)
- (if (macroexp-small-p (funcall do 'dummy (lambda (_) 'dummy)))
+ (if (or (not lexical-binding) ;The other code requires lexical-binding.
+ (macroexp-small-p (funcall do 'dummy (lambda (_) 'dummy))))
;; This duplicates the `do' code, which is a problem if that
;; code is large, but otherwise results in more efficient code.
`(if ,test ,(gv-get then do)