# HG changeset patch # User Stefan Monnier # Date 1195458145 0 # Node ID 0ec5ce87b9e08367cf125114f6f6033dbf9aa4a5 # Parent 8e5b337fea59204dd7b4c91f247e5899cf70335d * data.c (store_symval_forwarding, set_internal): * eval.c (specbind): Remove dead code. diff -r 8e5b337fea59 -r 0ec5ce87b9e0 src/ChangeLog --- a/src/ChangeLog Mon Nov 19 07:40:51 2007 +0000 +++ b/src/ChangeLog Mon Nov 19 07:42:25 2007 +0000 @@ -1,5 +1,8 @@ 2007-11-19 Stefan Monnier + * data.c (store_symval_forwarding, set_internal): + * eval.c (specbind): Remove dead code. + * coding.c (detect_coding, Fupdate_coding_systems_internal): * fns.c (Fmd5): Use find_symbol_value rather than SYMBOL_VALUE Since we do not want to see internal Lisp_*fwd objects here. diff -r 8e5b337fea59 -r 0ec5ce87b9e0 src/data.c --- a/src/data.c Mon Nov 19 07:40:51 2007 +0000 +++ b/src/data.c Mon Nov 19 07:42:25 2007 +0000 @@ -922,9 +922,11 @@ case Lisp_Misc_Intfwd: CHECK_NUMBER (newval); *XINTFWD (valcontents)->intvar = XINT (newval); - if (*XINTFWD (valcontents)->intvar != XINT (newval)) - error ("Value out of range for variable `%s'", - SDATA (SYMBOL_NAME (symbol))); + /* This can never happen since intvar points to an EMACS_INT + which is at least large enough to hold a Lisp_Object. + if (*XINTFWD (valcontents)->intvar != XINT (newval)) + error ("Value out of range for variable `%s'", + SDATA (SYMBOL_NAME (symbol))); */ break; case Lisp_Misc_Boolfwd: @@ -1237,9 +1239,8 @@ || buf != XBUFFER (XBUFFER_LOCAL_VALUE (valcontents)->buffer) || (XBUFFER_LOCAL_VALUE (valcontents)->check_frame && !EQ (selected_frame, XBUFFER_LOCAL_VALUE (valcontents)->frame)) - || (BUFFER_LOCAL_VALUEP (valcontents) - && EQ (XCAR (current_alist_element), - current_alist_element))) + || (EQ (XCAR (current_alist_element), + current_alist_element))) { /* The currently loaded binding is not necessarily valid. We need to unload it, and choose a new binding. */ diff -r 8e5b337fea59 -r 0ec5ce87b9e0 src/eval.c --- a/src/eval.c Mon Nov 19 07:40:51 2007 +0000 +++ b/src/eval.c Mon Nov 19 07:42:25 2007 +0000 @@ -3263,7 +3263,6 @@ specbind (symbol, value) Lisp_Object symbol, value; { - Lisp_Object ovalue; Lisp_Object valcontents; CHECK_SYMBOL (symbol); @@ -3283,9 +3282,7 @@ } else { - Lisp_Object valcontents; - - ovalue = find_symbol_value (symbol); + Lisp_Object ovalue = find_symbol_value (symbol); specpdl_ptr->func = 0; specpdl_ptr->old_value = ovalue; @@ -3330,10 +3327,14 @@ specpdl_ptr->symbol = symbol; specpdl_ptr++; - if (BUFFER_OBJFWDP (ovalue) || KBOARD_OBJFWDP (ovalue)) - store_symval_forwarding (symbol, ovalue, value, NULL); - else - set_internal (symbol, value, 0, 1); + /* We used to do + if (BUFFER_OBJFWDP (ovalue) || KBOARD_OBJFWDP (ovalue)) + store_symval_forwarding (symbol, ovalue, value, NULL); + else + but ovalue comes from find_symbol_value which should never return + such an internal value. */ + eassert (!(BUFFER_OBJFWDP (ovalue) || KBOARD_OBJFWDP (ovalue))); + set_internal (symbol, value, 0, 1); } }