David T. Lewis uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-dtl.825.mcz==================== Summary ====================
Name: Kernel-dtl.825
Author: dtl
Time: 14 December 2013, 3:42:04.82 pm
UUID: 813831b0-82db-47b5-99ab-dd11959a0c58
Ancestors: Kernel-fbs.824
The emergency evaluator does not work if primitiveError: is broken. Fix it.
=============== Diff against Kernel-fbs.824 ===============
Item was changed:
----- Method: Object>>primitiveError: (in category 'private') -----
primitiveError: aString
"This method is called when the error handling results in a recursion in
calling on error: or halt or halt:."
| hasTranscripter transcripter |
+ hasTranscripter := (Smalltalk classNamed: #Transcripter)
+ ifNotNil: [ :t | transcripter := t. true]
+ ifNil: [false].
- hasTranscripter := Smalltalk at: #Transcripter
- ifPresent: [ :t | transcripter := t. true]
- ifAbsent: [false].
(String
streamContents:
[:s |
| context |
s nextPutAll: '***System error handling failed***'.
s cr; nextPutAll: aString.
context := thisContext sender sender.
20 timesRepeat: [context == nil ifFalse: [s cr; print: (context := context sender)]].
s cr; nextPutAll: '-------------------------------'.
hasTranscripter
ifTrue: [
s cr; nextPutAll: 'Type CR to enter an emergency evaluator.'.
s cr; nextPutAll: 'Type any other character to restart.']
ifFalse: [
s cr; nextPutAll: 'Type any character to restart.']])
displayAt: 0 @ 0.
[Sensor keyboardPressed] whileFalse.
Sensor keyboard = Character cr ifTrue: [
hasTranscripter ifTrue: [transcripter emergencyEvaluator]].
Project current resetDisplay!