From 136eb6ed3f689a6348e5e1c23beef2563d70d6f1 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Mon, 19 Nov 2007 07:42:25 +0000 Subject: [PATCH] * data.c (store_symval_forwarding, set_internal): * eval.c (specbind): Remove dead code. --- src/ChangeLog | 3 +++ src/data.c | 13 +++++++------ src/eval.c | 17 +++++++++-------- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index d05ccc44b3d..e38d997c405 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -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 --git a/src/data.c b/src/data.c index 070d5a0c7ce..2ee84f01a14 100644 --- a/src/data.c +++ b/src/data.c @@ -922,9 +922,11 @@ store_symval_forwarding (symbol, valcontents, newval, buf) 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 @@ set_internal (symbol, newval, buf, bindflag) || 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 --git a/src/eval.c b/src/eval.c index 7f5f58a2e81..74ebb0c90b6 100644 --- a/src/eval.c +++ b/src/eval.c @@ -3263,7 +3263,6 @@ void specbind (symbol, value) Lisp_Object symbol, value; { - Lisp_Object ovalue; Lisp_Object valcontents; CHECK_SYMBOL (symbol); @@ -3283,9 +3282,7 @@ specbind (symbol, value) } 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 @@ specbind (symbol, value) 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); } } -- 2.39.2