in terminate: only ignore noHandlerSignal if the unhandled
authorClaus Gittinger <cg@exept.de>
Fri, 10 Oct 1997 13:08:29 +0200
changeset 3013 da4c5dd0fbd5
parent 3012 25d64e4f2a4d
child 3014 9934bb63d455
in terminate: only ignore noHandlerSignal if the unhandled signal is the TerminateSignal. Otherwise, no halts are possible while terminating (for example, in unwind blocks)
Process.st
--- a/Process.st	Thu Oct 09 18:18:16 1997 +0200
+++ b/Process.st	Fri Oct 10 13:08:29 1997 +0200
@@ -10,8 +10,6 @@
  hereby transferred.
 "
 
-'From Smalltalk/X, Version:3.1.9 on 26-aug-1997 at 3:52:33 pm'                  !
-
 Link subclass:#Process
 	instanceVariableNames:'id prio state startBlock name restartable interruptActions
 		exitActions suspendSemaphore singleStepping
@@ -1366,23 +1364,27 @@
     wasBlocked := OperatingSystem blockInterrupts.
     [
         self suspendedContext isNil ifTrue:[
-	    self terminateNoSignal.
+            self terminateNoSignal.
             ^ self
-	]
+        ]
     ] valueNowOrOnUnwindDo:[
-	wasBlocked ifFalse:[OperatingSystem unblockInterrupts]
+        wasBlocked ifFalse:[OperatingSystem unblockInterrupts]
     ].
 
     self interruptWith:[
         Signal noHandlerSignal handle:[:ex |
-            ex return.
+
+            ex parameter signal == TerminateSignal ifTrue:[
+                ex return.
+            ].
+            ex reject.
         ] do:[
             TerminateSignal raise.
         ].
         self terminateNoSignal.
     ]
 
-    "Modified: 12.1.1997 / 00:55:14 / cg"
+    "Modified: 10.10.1997 / 12:06:42 / cg"
 !
 
 terminateAllSubprocesses
@@ -1475,6 +1477,6 @@
 !Process class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Process.st,v 1.87 1997-08-28 02:42:37 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Process.st,v 1.88 1997-10-10 11:08:29 cg Exp $'
 ! !
 Process initialize!