From 4402a9ed6feee505862cd472bdc64be18b52f459 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Thu, 21 Nov 2002 17:33:01 +0000 Subject: [PATCH] (interactive_p): Skip any number of bytecode and subr frames, in any order. --- src/eval.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/eval.c b/src/eval.c index 856ec8f4a48..d59a3cd9eb9 100644 --- a/src/eval.c +++ b/src/eval.c @@ -595,17 +595,15 @@ interactive_p (exclude_subrs_p) btp = btp->next; /* If we're running an Emacs 18-style byte-compiled function, there - may be a frame for Fbytecode. Now, given the strictest - definition, this function isn't really being called - interactively, but because that's the way Emacs 18 always builds - byte-compiled functions, we'll accept it for now. */ - if (EQ (*btp->function, Qbytecode)) - btp = btp->next; + may be a frame for Fbytecode at the top level. In any version of + Emacs there can be Fbytecode frames for subexpressions evaluated + inside catch and condition-case. Skip past them. - /* If this isn't a byte-compiled function, then we may now be + If this isn't a byte-compiled function, then we may now be looking at several frames for special forms. Skip past them. */ - while (btp && - btp->nargs == UNEVALLED) + while (btp + && (EQ (*btp->function, Qbytecode) + || btp->nargs == UNEVALLED)) btp = btp->next; /* btp now points at the frame of the innermost function that isn't -- 2.39.2