diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index bea87530f50..919e5f4465a 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+Fri Feb  7 10:06:22 1997  Jeffrey A Law  (law@cygnus.com)
+
+	* blockframe.c (generic_frame_chain_valid): If the new frame
+	is not INNER_THAN the old frame, then it's not valid.
+
 Tue Feb 04 09:04:37 1997  Mark Alexander  <marka@cygnus.com>
 
 	* mips-tdep.c (mips16_get_imm): Fix calculation of extended immediate.
diff --git a/gdb/blockframe.c b/gdb/blockframe.c
index d10bdd3055a..3a84ae7b78b 100644
--- a/gdb/blockframe.c
+++ b/gdb/blockframe.c
@@ -997,7 +997,9 @@ generic_frame_chain_valid (fp, fi)
   if (PC_IN_CALL_DUMMY(FRAME_SAVED_PC(fi), fp, fp))
     return 1;   /* don't prune CALL_DUMMY frames */
   else          /* fall back to default algorithm (see frame.h) */
-    return (fp != 0 && !inside_entry_file (FRAME_SAVED_PC(fi)));
+    return (fp != 0
+	    && fi->frame INNER_THAN fp
+	    && !inside_entry_file (FRAME_SAVED_PC(fi)));
 }
  
 /* Function: get_saved_register