aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier <[email protected]>2007-11-19 07:42:25 +0000
committerStefan Monnier <[email protected]>2007-11-19 07:42:25 +0000
commit136eb6ed3f689a6348e5e1c23beef2563d70d6f1 (patch)
treecf7f465716b328887984e90d11a8d7f7b2cc1c3c
parentbae72c12b51affc4dbe7284857af5be9cee83c81 (diff)
* data.c (store_symval_forwarding, set_internal):
* eval.c (specbind): Remove dead code.
-rw-r--r--src/ChangeLog3
-rw-r--r--src/data.c13
-rw-r--r--src/eval.c17
3 files changed, 19 insertions, 14 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index d05ccc44b3..e38d997c40 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,8 @@
2007-11-19 Stefan Monnier <[email protected]>
+ * 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 070d5a0c7c..2ee84f01a1 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 7f5f58a2e8..74ebb0c90b 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);
}
}