changeset 48492:8faa4c711a1a

(interactive_p): Skip any number of bytecode and subr frames, in any order.
author Richard M. Stallman <rms@gnu.org>
date Thu, 21 Nov 2002 17:33:01 +0000
parents 5d690a3537aa
children 4c14ea08ea5d
files src/eval.c
diffstat 1 files changed, 8 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- 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