From 23c3caf6025f1cbe37781ceb359fac2c67268f45 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 26 Dec 2015 12:43:08 +0200 Subject: [PATCH] Avoid assertion violation in unbind_to * src/eval.c (unbind_to) : Avoid assertion violation if we get here with an object that is not a symbol. (Bug#14412) --- src/eval.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/eval.c b/src/eval.c index d04796abc3a..571681c318f 100644 --- a/src/eval.c +++ b/src/eval.c @@ -3196,11 +3196,15 @@ 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. */ - struct Lisp_Symbol *sym = XSYMBOL (specpdl_symbol (specpdl_ptr)); - if (sym->redirect == SYMBOL_PLAINVAL) + Lisp_Object symbol = specpdl_symbol (specpdl_ptr); + if (SYMBOLP (symbol)) { - SET_SYMBOL_VAL (sym, specpdl_old_value (specpdl_ptr)); - break; + struct Lisp_Symbol *sym = XSYMBOL (symbol); + if (sym->redirect == SYMBOL_PLAINVAL) + { + SET_SYMBOL_VAL (sym, specpdl_old_value (specpdl_ptr)); + break; + } } else { /* FALLTHROUGH!! -- 2.39.2