[V3dot10] Re: [Bug] 0006839: #comeFullyUpOnReload: not sent to
MorphExtension's otherProperties (anIdentityDictionary)
Klaus D. Witzel
klaus.witzel at cobss.com
Mon Jan 7 12:04:27 UTC 2008
You're right Edgar, forgot to mention what was loaded into what and to
post .image version, apologies.
In a fresh Squeak3.9-final-7067.image with fresh ConnectorsFor3.8-187.sar
loaded, no problem so far with MorphExtension otherProperties'
IdentityDictionaries,
Test: load .pr, then NCUMLDiagramMorph allSubInstances collect: [:each |
each otherProperties printString]
In your FunSqueak3.10alpha.4.image with connectors pre-loaded by you, also
no problem.
Test: same, result: no problem.
In sq3.10-7158dev07.10.2.image, see SqueakDebug.log at the bottom (same
cause as Mantis 6839 report).
If it could be found out what change went into effect between 7158 and
your 'FunSqueak3.10alpha of 19 November 2007 [latest update: #1]' then I
could add that to the bug report.
BTW, you posted file name FunSqueak3.10alpha.4.zip but that .image writes
the string from my previous sentence, see also this from a #halt debug log,
'Halt
7 January 2008 12:56:54 pm
VM: Win32 - [4062]a SmalltalkImage
Image: FunSqueak3.10alpha [latest update: #1]'
Want me to load ConnectorsFor3.8-187.sar into another .image (which) and
give it a try?
/Klaus
On Mon, 07 Jan 2008 12:50:58 +0100, Edgar J. De Cleene wrote:
>
>
>
> El 1/7/08 7:28 AM, "Klaus D. Witzel" escribió:
>
>> When saving/loading playfields (Projects) it looks like
>> IdentityDictionaries which are hold by MorphExtension's otherProperties
>> are not rehashed on load,
>>
>> - http://bugs.squeak.org/view.php?id=6839
>>
>> which seems to describe a similiar situation as
>>
>> - http://bugs.squeak.org/view.php?id=6721
>>
>> /Klaus
>>
>> P.S. workaround:
>>
>> IdentityDictionary allInstances do: [:each | each rehash]
>> "don't #allInstancesDo: "
>
> I read carefully.
> In http://bugs.squeak.org/view.php?id=6721 , Jerome conclusion is problem
> origin was changing all == (Dan idea , bad resolved by me) , but we
> revert,
> so ?
> Also Jerome and I was exchanging mails about .pr and SmartRefStream odds.
> Bert send mail about this.
>
> Your .pr how was produced ?
> You said you have Connectors, which version ?
> I afraid if I don't assemble exact the same image as you, can't see the
> problem.
>
>
> Edgar
----------------------------
Error: key not found
7 January 2008 12:45:44 pm
VM: Win32 - a SmalltalkImage
Image: Squeak3.10beta [latest update: #7158]
SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir ...\SqueakDev
Trusted Dir ...\SqueakDev\kWitzel
Untrusted Dir ...\My Squeak\kWitzel
IdentityDictionary(Object)>>error:
Receiver: <<error during printing>>
Arguments and temporary variables:
aString: 'key not found'
Receiver's instance variables:
tally: 5
array: {#layoutProperties->a TableLayoutProperties . nil .
#connectedConstraint...etc...
IdentityDictionary(Dictionary)>>errorKeyNotFound
Receiver: <<error during printing>>
Arguments and temporary variables:
Receiver's instance variables:
tally: 5
array: {#layoutProperties->a TableLayoutProperties . nil .
#connectedConstraint...etc...
[] in IdentityDictionary(Dictionary)>>at: {[self errorKeyNotFound]}
Arguments and temporary variables:
key: #attachmentPointSpecs
IdentityDictionary(Dictionary)>>at:ifAbsent:
Receiver: <<error during printing>>
Arguments and temporary variables:
key: #attachmentPointSpecs
aBlock: [] in IdentityDictionary(Dictionary)>>at: {[self
errorKeyNotFound]}
assoc: nil
Receiver's instance variables:
tally: 5
array: {#layoutProperties->a TableLayoutProperties . nil .
#connectedConstraint...etc...
--- The full stack ---
IdentityDictionary(Object)>>error:
IdentityDictionary(Dictionary)>>errorKeyNotFound
[] in IdentityDictionary(Dictionary)>>at: {[self errorKeyNotFound]}
IdentityDictionary(Dictionary)>>at:ifAbsent:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IdentityDictionary(Dictionary)>>at:
[] in IdentityDictionary(Dictionary)>>printElementsOn: {[:key | aStream
print: key; nextPutAll: '->'; print: (self at: key);...]}
SortedCollection(OrderedCollection)>>do:
IdentityDictionary(Dictionary)>>printElementsOn:
IdentityDictionary(Collection)>>printOn:
[] in IdentityDictionary(Object)>>printStringLimitedTo: {[:s | self
printOn: s]}
String class(SequenceableCollection class)>>streamContents:limitedTo:
IdentityDictionary(Object)>>printStringLimitedTo:
IdentityDictionary(Object)>>printString
[] in UndefinedObject>>DoIt {[:each | each otherProperties printString]}
OrderedCollection>>collect:
UndefinedObject>>DoIt
Compiler>>evaluate:in:to:notifying:ifFail:logged:
[] in TextMorphEditor(ParagraphEditor)>>evaluateSelection {[rcvr class
evaluatorClass new evaluate: self selectionAsStream in: ctxt...]}
BlockContext>>on:do:
TextMorphEditor(ParagraphEditor)>>evaluateSelection
TextMorphEditor(ParagraphEditor)>>inspectIt
TextMorphEditor>>inspectIt:
TextMorphEditor(ParagraphEditor)>>dispatchOnCharacter:with:
TextMorphEditor>>dispatchOnCharacter:with:
TextMorphEditor(ParagraphEditor)>>readKeyboard
TextMorphEditor>>readKeyboard
[] in TextMorphForEditView(TextMorph)>>keyStroke: {[editor readKeyboard]}
TextMorphForEditView(TextMorph)>>handleInteraction:fromEvent:
TextMorphForEditView>>handleInteraction:fromEvent:
TextMorphForEditView(TextMorph)>>keyStroke:
TextMorphForEditView>>keyStroke:
TextMorphForEditView(TextMorph)>>handleKeystroke:
KeyboardEvent>>sentTo:
TextMorphForEditView(Morph)>>handleEvent:
TextMorphForEditView(Morph)>>handleFocusEvent:
[] in HandMorph>>sendFocusEvent:to:clear: {[ActiveHand := self.
ActiveEvent := anEvent. result := focusHolder han...]}
[] in PasteUpMorph>>becomeActiveDuring: {[aBlock value]}
BlockContext>>on:do:
PasteUpMorph>>becomeActiveDuring:
HandMorph>>sendFocusEvent:to:clear:
HandMorph>>sendEvent:focus:clear:
HandMorph>>sendKeyboardEvent:
HandMorph>>handleEvent:
HandMorph>>processEvents
[] in WorldState>>doOneCycleNowFor: {[:h | ActiveHand := h. h
processEvents. capturingGesture := capturingGest...]}
Array(SequenceableCollection)>>do:
WorldState>>handsDo:
WorldState>>doOneCycleNowFor:
WorldState>>doOneCycleFor:
PasteUpMorph>>doOneCycle
[] in Project class>>spawnNewProcess {[[World doOneCycle. Processor
yield. false] whileFalse. nil]}
[] in BlockContext>>newProcess {[self value. Processor terminateActive]}
More information about the V3dot10
mailing list