bugs

Geoff Canyon gcanyon at inspiredlogic.com
Tue Apr 11 02:12:15 EDT 2006


On Apr 10, 2006, at 10:11 PM, Tariel Gogoberidze wrote:

> On Apr 9, 2006, at 1:00 PM, Geoff Canyon wrote:
>>
>> Here is an example of something slightly larger than a single line
>> (and actually useful) that I think is bug-free:
>
>>
>> on stableSetSize pID,W,H
>>    -- sets the width and height of pID
>>    -- while keeping the topleft the same
>>    try
>>      put the rect of pID into tRect
>>    catch tSomeError
>>      exit stableSetSize
>>    end try
>>    if W is a number then put item 1 of tRect + W into item 3 of tRect
>>    if H is a number then put item 2 of tRect + H into item 4 of tRect
>>    set the rect of pID to tRect
>> end stableSetSize
>>
>
> Assuming correct input  it seems to be bug free. However..
>
> on mouseUp
>   put "button 1" into PID
>   put 500000000000000.2 into W -- !
>   put 50.3 into H
>   stableSetSize pID,W,H
> end mouseUp
>
> Throws execution error here "rectangle does not have 4 points"
>
> :)

In discussion with a non-Rev-using friend earlier today (what, you  
don't spend your spare time discussing esoteric issues with your  
friends?) the idea of overflow was pointed out to me.

Note in my defense that the code is proof against non-integers, non- 
numbers, and negative numbers. So the only thing that should break it  
is too-large numbers.

That said, I noticed in the docs that if the lockLoc of an object is  
true, it resizes from the topleft. I thought this would be a good  
thing, but it means that I have to lock the screen in order to not  
show first the width changing, then the height. It also doesn't  
handle cds or groups, etc. So I stuck with the rectangle routine, but  
with more data checks:

on stableSetSize pID,W,H
   -- sets the width of and height of pID
   -- while keeping the topleft the same
   try
     put the rect of pID into tRect
   catch tSomeErr
     exit stableSetSize
   end try
   if W is a number then
     if word 1 of pID is among the items of "image,img" and \
         the platform is "MacOS" then
       put min(4096,W) into W  -- this is a temp
     end if
     put min(32767,W + item 1 of tRect) into item 3 of tRect
   end if
   if H is a number then put min(32767,H + item 2 of tRect) into item  
4 of tRect
   set the rect of pID to tRect
end stableSetSize

Maybe that will hold up a bit longer.

regards,

gc



More information about the use-livecode mailing list