[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] emacs-25 b45828e: Propagate Bug#14412 fix to backtrace_eva
From: |
Paul Eggert |
Subject: |
[Emacs-diffs] emacs-25 b45828e: Propagate Bug#14412 fix to backtrace_eval_unrewind |
Date: |
Sat, 26 Dec 2015 17:32:08 +0000 |
branch: emacs-25
commit b45828ee139dae3b9570883816453f5a451d35d3
Author: Paul Eggert <address@hidden>
Commit: Paul Eggert <address@hidden>
Propagate Bug#14412 fix to backtrace_eval_unrewind
* src/eval.c (unbind_to): Redo so that the FALLTHROUGH!! comment
becomes accurate again. This shouldn’t affect behavior.
(backtrace_eval_unrewind): Apply the recent unbind_to fix here, too.
---
src/eval.c | 21 +++++++++------------
1 files changed, 9 insertions(+), 12 deletions(-)
diff --git a/src/eval.c b/src/eval.c
index 571681c..bd0cf68 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -3196,15 +3196,12 @@ unbind_to (ptrdiff_t count, Lisp_Object value)
{ /* If variable has a trivial value (no forwarding), we can
just set it. No need to check for constant symbols here,
since that was already done by specbind. */
- Lisp_Object symbol = specpdl_symbol (specpdl_ptr);
- if (SYMBOLP (symbol))
+ Lisp_Object sym = specpdl_symbol (specpdl_ptr);
+ if (SYMBOLP (sym) && XSYMBOL (sym)->redirect == SYMBOL_PLAINVAL)
{
- struct Lisp_Symbol *sym = XSYMBOL (symbol);
- if (sym->redirect == SYMBOL_PLAINVAL)
- {
- SET_SYMBOL_VAL (sym, specpdl_old_value (specpdl_ptr));
- break;
- }
+ SET_SYMBOL_VAL (XSYMBOL (sym),
+ specpdl_old_value (specpdl_ptr));
+ break;
}
else
{ /* FALLTHROUGH!!
@@ -3412,12 +3409,12 @@ backtrace_eval_unrewind (int distance)
{ /* If variable has a trivial value (no forwarding), we can
just set it. No need to check for constant symbols here,
since that was already done by specbind. */
- struct Lisp_Symbol *sym = XSYMBOL (specpdl_symbol (tmp));
- if (sym->redirect == SYMBOL_PLAINVAL)
+ Lisp_Object sym = specpdl_symbol (tmp);
+ if (SYMBOLP (sym) && XSYMBOL (sym)->redirect == SYMBOL_PLAINVAL)
{
Lisp_Object old_value = specpdl_old_value (tmp);
- set_specpdl_old_value (tmp, SYMBOL_VAL (sym));
- SET_SYMBOL_VAL (sym, old_value);
+ set_specpdl_old_value (tmp, SYMBOL_VAL (XSYMBOL (sym)));
+ SET_SYMBOL_VAL (XSYMBOL (sym), old_value);
break;
}
else
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] emacs-25 b45828e: Propagate Bug#14412 fix to backtrace_eval_unrewind,
Paul Eggert <=