Mercurial > emacs
changeset 86082:8743273c407c
(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.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Thu, 15 Nov 2007 06:00:07 +0000 |
parents | 1f9bb7803baa |
children | 2fd69da606fa |
files | src/ChangeLog src/data.c |
diffstat | 2 files changed, 15 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ChangeLog Thu Nov 15 04:19:04 2007 +0000 +++ b/src/ChangeLog Thu Nov 15 06:00:07 2007 +0000 @@ -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)
--- a/src/data.c Thu Nov 15 04:19:04 2007 +0000 +++ b/src/data.c Thu Nov 15 06:00:07 2007 +0000 @@ -1011,26 +1011,23 @@ 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.