# HG changeset patch # User Richard M. Stallman # Date 1037899981 0 # Node ID 8faa4c711a1a15973693b7683a1731dcc25ff6c7 # Parent 5d690a3537aa8307a1b24d05304b7c7fd78be076 (interactive_p): Skip any number of bytecode and subr frames, in any order. diff -r 5d690a3537aa -r 8faa4c711a1a src/eval.c --- a/src/eval.c Thu Nov 21 17:31:51 2002 +0000 +++ b/src/eval.c Thu Nov 21 17:33:01 2002 +0000 @@ -595,17 +595,15 @@ 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; - - /* If this isn't a byte-compiled function, then we may now be + 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 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