mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-15 09:47:20 +00:00
(swap_in_global_binding): Fix longstanding bug where
store_symval_forwarding was not called with the right second argument, thus causing objfwd-ing from being dropped.
This commit is contained in:
parent
a81f03138a
commit
262fcd41bc
@ -1,3 +1,9 @@
|
||||
2007-11-15 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* data.c (swap_in_global_binding): Fix longstanding bug where
|
||||
store_symval_forwarding was not called with the right second argument,
|
||||
thus causing objfwd-ing from being dropped.
|
||||
|
||||
2007-11-14 Juanma Barranquero <lekktu@gmail.com>
|
||||
|
||||
* macfns.c (Fx_create_frame, Fx_display_pixel_width)
|
||||
|
21
src/data.c
21
src/data.c
@ -1011,26 +1011,23 @@ void
|
||||
swap_in_global_binding (symbol)
|
||||
Lisp_Object symbol;
|
||||
{
|
||||
Lisp_Object valcontents, cdr;
|
||||
|
||||
valcontents = SYMBOL_VALUE (symbol);
|
||||
if (!BUFFER_LOCAL_VALUEP (valcontents))
|
||||
abort ();
|
||||
cdr = XBUFFER_LOCAL_VALUE (valcontents)->cdr;
|
||||
Lisp_Object valcontents = SYMBOL_VALUE (symbol);
|
||||
struct Lisp_Buffer_Local_Value *blv = XBUFFER_LOCAL_VALUE (valcontents);
|
||||
Lisp_Object cdr = blv->cdr;
|
||||
|
||||
/* Unload the previously loaded binding. */
|
||||
Fsetcdr (XCAR (cdr),
|
||||
do_symval_forwarding (XBUFFER_LOCAL_VALUE (valcontents)->realvalue));
|
||||
do_symval_forwarding (blv->realvalue));
|
||||
|
||||
/* Select the global binding in the symbol. */
|
||||
XSETCAR (cdr, cdr);
|
||||
store_symval_forwarding (symbol, valcontents, XCDR (cdr), NULL);
|
||||
store_symval_forwarding (symbol, blv->realvalue, XCDR (cdr), NULL);
|
||||
|
||||
/* Indicate that the global binding is set up now. */
|
||||
XBUFFER_LOCAL_VALUE (valcontents)->frame = Qnil;
|
||||
XBUFFER_LOCAL_VALUE (valcontents)->buffer = Qnil;
|
||||
XBUFFER_LOCAL_VALUE (valcontents)->found_for_frame = 0;
|
||||
XBUFFER_LOCAL_VALUE (valcontents)->found_for_buffer = 0;
|
||||
blv->frame = Qnil;
|
||||
blv->buffer = Qnil;
|
||||
blv->found_for_frame = 0;
|
||||
blv->found_for_buffer = 0;
|
||||
}
|
||||
|
||||
/* Set up the buffer-local symbol SYMBOL for validity in the current buffer.
|
||||
|
Loading…
Reference in New Issue
Block a user