in terminate: only ignore noHandlerSignal if the unhandled
signal is the TerminateSignal.
Otherwise, no halts are possible while terminating
(for example, in unwind blocks)
--- 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!