Re: Serialization of BorderedMorph

"Marcel Taeumel (H) via Squeak-dev" <[email protected]>
Newsgroups gmane.comp.lang.smalltalk.squeak.general
Message-ID <[email protected]>
Hi Stef --

Would a safeguard "Project current addDeferredUIMessage: [ ... ]" or "[ 
... ] on: Error do: [:ex | ]" help for your case?

Best,
Marcel

Am 15.08.2026 um 17:35 schrieb Stéphane Rollandin:
> Hello all,
>
> Still examining the various side effects of loading my old code in a 
> 6.1 image...
>
> I found something rather disturbing:
>
> When a BorderedMorph is reading from a file (or from any ref stream), 
> its own (and very recent) implementation of #readDataFrom:size: sends 
> #borderColor: and #borderWidth: (that is intended for backward 
> compatibility).
>
> This may have tricky side effects though, because both #borderColor: 
> and #borderWidth: trigger #changed, which may itself update the layout 
> of the morph. Since this happens while the morph is being read, in a 
> context where the overall structure it is part of is not in a 
> consistent state.
>
> More generally, we do not know beforehand what a specific 
> implementation of #borderWidth: may do.
>
> For example, in Connectors, one implementation iterates over 
> submorphs. This breaks if the submorphs inst. var. is nil at that 
> point, which is the bug I got. It made it impossible to load the muO 
> documentation, which is made of very complex morphs.
>
> So in my use case, the fix to provide backward compatibility actually 
> broke it :)
>
> I can work around this on my side, but I believe this is a quite 
> dangerous pattern: a Morph should not be tweaked in potentially 
> arbitrary ways while it is being instanciated from a ref stream.
>
>
> Stef
>
>
>
> Squeak-dev mailing list -- [email protected]
> To unsubscribe send an email to 
> [email protected]
Squeak-dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.