Add paranoia check for inconsistent stack.
authorGuillermo J. Rozas <edu/mit/csail/zurich/gjr>
Thu, 16 Aug 1990 08:42:15 +0000 (08:42 +0000)
committerGuillermo J. Rozas <edu/mit/csail/zurich/gjr>
Thu, 16 Aug 1990 08:42:15 +0000 (08:42 +0000)
v7/src/microcode/debug.c

index 67798c709b61936123cec8dc7aa590482d75a9a8..dc97edf2153ba01a72e0786d5f23e56a1266a5fb 100644 (file)
@@ -1,6 +1,6 @@
 /* -*-C-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/debug.c,v 9.36 1990/08/07 23:33:31 jinx Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/microcode/debug.c,v 9.37 1990/08/16 08:42:15 jinx Rel $
 
 Copyright (c) 1987, 1988, 1989, 1990 Massachusetts Institute of Technology
 
@@ -736,6 +736,14 @@ Back_Trace (where)
   Old_Stack = Stack_Pointer;
   while (true)
   {
+    if ((STACK_LOCATIVE_DIFFERENCE (Stack_Top, (STACK_LOC (0)))) <= 0)
+    {
+      if ((STACK_LOC (0)) == Old_Stack)
+       printf ("\n[Invalid stack pointer.]\n");
+      else
+       printf ("\n[Stack ends abruptly.]\n");
+      break;
+    }
     if (Return_Hook_Address == (STACK_LOC (0)))
     {
       Temp = (STACK_POP ());