[squeak-dev] [BUG][M7635] Fraction class co-ordinates

Bert Freudenberg bert at freudenbergs.de
Mon May 23 10:19:38 UTC 2011


On 23.05.2011, at 05:04, David T. Lewis wrote:

> On Sun, May 22, 2011 at 04:37:24PM -0400, David T. Lewis wrote:
>> On Fri, May 20, 2011 at 10:17:29PM -0700, Jerome Peace wrote:
>>> 
>>> http://bugs.squeak.org/view.php?id=7635
>>> Summary 	0007635: Graphics primitives will raise errors when rectangles have widths in fractions.
>>> Description 	For this one in a work space evaluate
>>> 
>>> box :=
>>> RectangleMorph new openCenteredInWorld .
>>> 
>>> box bounds: ((375 at 280 corner: 425 at 320) insetBy: (3/4)).
>>> 
>>> The alternate form:
>>> box bounds: ((375 at 280 corner: 425 at 320) insetBy: (0.75))
>>> 
>>> will work without error.
>> 
>> Thanks, this is fixed in trunk now.
>> 
> 
> In Mantis 7635 (Graphics primitives will raise errors when rectangles have
> widths in fractions), Jerome points out quite rightly that the "self error:"
> in BitBlt>>copyBits is a bad thing (indeed it crashes the image when updating
> a morph with bounds containing a fraction), and suggests that the problem be
> fixed in #copyBits. Removing the error notification in #copyBits resolves
> the problem, because this is fallback code for the failed primitive which
> does the right thing by fixing the parameters and calling the primitive a
> second time. However, removing the error notifier also masks a real problem
> that would otherwise have gone undetected (which I presume is the reason
> the notifier was put there in the first place).
> 
> Summary: The potential for crashing the image in this case is a long-standing
> problem. We could make it go away to removing the problematic error notifier
> (which crashes the image when invoked from the morphic update loop). However,
> this fix would allow problems such as that reported in Mantis 7635 to go
> undetected.
> 
> Opinions?
> 
> Background at <http://bugs.squeak.org/view.php?id=7635>
> 
> I am somewhat inclined to think that it is better to leave the error
> notifier in place, even though it can and will crash the image in
> some circumstances. But better yet would be if someone can think
> of a way of detecting the problem in some way that does not involve
> potentially crashing the image.
> 
> Dave

This should have worked fine. Errors during the Morphic draw loop normally are caught. I'd not take out the error notification, but rather bullet-proof drawErrorOn:. 

In fact, I just committed Morphic-bf.543 to do that. For testing you can revert Morph>>extent: and try the fraction example again. You now simply get a debugger rather than a fatal error, just like the Morphic Gods intended ;)

There is a problem that some classes overriding fullDrawOn: do not check for the errorOnDraw property. E.g. I just had to add the check to HandMorph's override, otherwise I'd get the same fatal error when picking up the broken morph. I did not fix the other implementors.

- Bert -




More information about the Squeak-dev mailing list