DEADSOFTWARE

disable stack trace after user interrupt
[cpc.git] / src / cpfront / posix / generic / System / Mod / Kernel.cp
index 8d4c334f2896df1262b8371a0fef66ecfbfcb3c2..622e0b10cc31ffb511333206090233333c0fd193 100644 (file)
@@ -238,7 +238,9 @@ MODULE Kernel;
 
     wouldFinalize: BOOLEAN;
 
-    watcher*: PROCEDURE (event: INTEGER); (* for debugging *)   
+    watcher*: PROCEDURE (event: INTEGER); (* for debugging *)
+
+    intTrap*: BOOLEAN;
 
   PROCEDURE Erase (adr, words: INTEGER);
   BEGIN
@@ -1559,7 +1561,7 @@ MODULE Kernel;
       SetDLink(tryDLink);
       setjmp._longjmp(tryEnv, 1)
     END;
-    IF err = 128 THEN (* do nothing *)
+    IF (err = 128) OR (err = 200) & ~intTrap THEN (* do nothing *)
     ELSIF (trapViewer # NIL) & (restart # NIL) & ~trapped & ~guarded THEN
       trapped := TRUE; trapViewer()
     ELSE DefaultTrapViewer
@@ -1622,7 +1624,7 @@ MODULE Kernel;
       SetDLink(tryDLink);
       setjmp._longjmp(tryEnv, 1)
     END;
-    IF err = 128 THEN (* do nothing *)
+    IF (err = 128) OR (err = 200) & ~intTrap THEN (* do nothing *)
     ELSIF (trapViewer # NIL) & (restart # NIL) & ~trapped & ~guarded THEN
       trapped := TRUE; trapViewer()
     ELSE DefaultTrapViewer
@@ -1662,6 +1664,7 @@ MODULE Kernel;
   PROCEDURE Init;
     VAR i: INTEGER;
   BEGIN
+    intTrap := TRUE;
     baseStack := S.ADR(i); (* XXX *)
     pagesize := unistd.sysconf(unistd._SC_PAGESIZE);