[squeak-dev] The Trunk: Kernel-eem.1484.mcz

commits at source.squeak.org commits at source.squeak.org
Fri Jun 24 23:58:12 UTC 2022

Eliot Miranda uploaded a new version of Kernel to project The Trunk:

==================== Summary ====================

Name: Kernel-eem.1484
Author: eem
Time: 24 June 2022, 4:58:09.258613 pm
UUID: f8ca934f-5875-434a-8cec-4d055099bdb6
Ancestors: Kernel-mt.1483

Fix a bug in Process>>signalException: where signalling a suspended process would cause a cannot return exception.

=============== Diff against Kernel-mt.1483 ===============

Item was changed:
  ----- Method: Process>>signalException: (in category 'signaling') -----
  signalException: anException
  	"Signal an exception in the receiver process...if the receiver is currently
  	suspended, the exception will get signaled when the receiver is resumed.  If 
  	the receiver is blocked on a Semaphore, it will be immediately re-awakened
  	and the exception will be signaled; if the exception is resumed, then the receiver
  	will return to a blocked state unless the blocking Semaphore has excess signals"
  	"If we are the active process, go ahead and signal the exception"
  	 self isActiveProcess ifTrue: [^anException signal].
  	"Suspend myself first to ensure that I won't run away
  	 in the midst of the following modifications."
+ 	self isSuspended ifFalse:
+ 		[self suspend].
+ 	suspendedContext ifNil: [self error: 'no suspended context!!!!'].
+ 	suspendedContext := Context
- 	 self suspend.
- 	 suspendedContext := Context
  								sender: suspendedContext
  								receiver: anException
  								method: (anException class lookupSelector: #signal)
  								arguments: #().
+ 	^self resume!
- 	 ^self resume!

More information about the Squeak-dev mailing list