Morph Must Die!!! (a bug report)

Chris Reuter cgreuter at calum.csclub.uwaterloo.ca
Sun Jun 14 03:46:29 UTC 1998



I Wrote:

> I seem to have discovered a bug in Morphic.  It seems that deleted
> Morphs continue to hang around and bloat the image.  I was able to
> reproduce it in the following manner:
[deletia]

OK, it turns out I was wrong about the bug affecting all Morphs.
Rigorous use of Smalltalk>>garbageCollect showed that only instances
of the particular Morphic subclass I'm working on is affected.  It
turns out that this Morph accidentally creates a dependency that
doesn't get broken when the Morph is closed (i.e. sent #delete).  The
stale Association in DependentsFields keeps the Morph alive.

This Morph is a subclass of SystemWindow, created in the time-honoured
tradition of creating a subclass and making it create the necessary
submorphs.  This one creates two submorphs--a custom widget and a
PluggableTextMorph with a TranscriptStream as model.  The parent
window has no model.

The dependency between the TranscriptStream and the PluggableTextMorph
is what goes in DependentsFields--closing the window doesn't break it,
so a reference to the PluggableTextMorph (and thus, the whole window)
stays alive.  The main window itself doesn't have a model.

Is this a Squeak bug or did I do something wrong?  Up until now,
subclassing a Morph and adding submorphs didn't require any other code
to work, which makes this behaviour incongruent with the rest of
Morphic.

It appears that there is a lot to Morphic that I still don't
understand.


				--Chris





More information about the Squeak-dev mailing list