[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] trunk r114048: * src/eval.c (Ffuncall): Fix handling of ((
From: |
Stefan Monnier |
Subject: |
[Emacs-diffs] trunk r114048: * src/eval.c (Ffuncall): Fix handling of ((lambda ..) ..) in lexically |
Date: |
Wed, 28 Aug 2013 18:27:29 +0000 |
User-agent: |
Bazaar (2.6b2) |
------------------------------------------------------------
revno: 114048
revision-id: address@hidden
parent: address@hidden
fixes bug: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=11258
committer: Stefan Monnier <address@hidden>
branch nick: trunk
timestamp: Wed 2013-08-28 14:27:26 -0400
message:
* src/eval.c (Ffuncall): Fix handling of ((lambda ..) ..) in lexically
scoped code.
modified:
src/ChangeLog changelog-20091113204419-o5vbwnq5f7feedwu-1438
src/eval.c eval.c-20091113204419-o5vbwnq5f7feedwu-237
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog 2013-08-28 16:20:15 +0000
+++ b/src/ChangeLog 2013-08-28 18:27:26 +0000
@@ -1,3 +1,8 @@
+2013-08-28 Stefan Monnier <address@hidden>
+
+ * eval.c (Ffuncall): Fix handling of ((lambda ..) ..) in lexically
+ scoped code (bug#11258).
+
2013-08-28 Davor Cubranic <address@hidden> (tiny change)
* nsterm.m (last_window): New variable.
@@ -12,8 +17,8 @@
(SINGLE_BYTE_CHAR_P, SAME_CHARSET_P, MAKE_CHAR, BYTE8_TO_CHAR):
Remove unused macro definitions.
(CHARSET_RANGE_TABLE_BITS, EXTEND_RANGE_TABLE)
- (SET_RANGE_TABLE_WORK_AREA_BIT, SET_RANGE_TABLE_WORK_AREA): Only
- define if emacs.
+ (SET_RANGE_TABLE_WORK_AREA_BIT, SET_RANGE_TABLE_WORK_AREA):
+ Only define if emacs.
2013-08-28 Dmitry Antipov <address@hidden>
=== modified file 'src/eval.c'
--- a/src/eval.c 2013-08-12 07:12:07 +0000
+++ b/src/eval.c 2013-08-28 18:27:26 +0000
@@ -2149,6 +2149,8 @@
if (SYMBOLP (fun) && !NILP (fun)
&& (fun = XSYMBOL (fun)->function, SYMBOLP (fun)))
fun = indirect_function (fun);
+ else
+ fun = Ffunction (Fcons (fun, Qnil));
if (SUBRP (fun))
{
@@ -3151,20 +3153,17 @@
return 0;
}
-/* `specpdl_ptr->symbol' is a field which describes which variable is
+/* `specpdl_ptr' describes which variable is
let-bound, so it can be properly undone when we unbind_to.
- It can have the following two shapes:
- - SYMBOL : if it's a plain symbol, it means that we have let-bound
- a symbol that is not buffer-local (at least at the time
- the let binding started). Note also that it should not be
+ It can be either a plain SPECPDL_LET or a SPECPDL_LET_LOCAL/DEFAULT.
+ - SYMBOL is the variable being bound. Note that it should not be
aliased (i.e. when let-binding V1 that's aliased to V2, we want
to record V2 here).
- - (SYMBOL WHERE . BUFFER) : this means that it is a let-binding for
- variable SYMBOL which can be buffer-local. WHERE tells us
- which buffer is affected (or nil if the let-binding affects the
- global value of the variable) and BUFFER tells us which buffer was
- current (i.e. if WHERE is non-nil, then BUFFER==WHERE, otherwise
- BUFFER did not yet have a buffer-local value). */
+ - WHERE tells us in which buffer the binding took place.
+ This is used for SPECPDL_LET_LOCAL bindings (i.e. bindings to a
+ buffer-local variable) as well as for SPECPDL_LET_DEFAULT bindings,
+ i.e. bindings to the default value of a variable which can be
+ buffer-local. */
void
specbind (Lisp_Object symbol, Lisp_Object value)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] trunk r114048: * src/eval.c (Ffuncall): Fix handling of ((lambda ..) ..) in lexically,
Stefan Monnier <=