Very nice and clean example code.  

Also, as you hinted, this does have the problem:
        add 1 to item random(16) of myVar

I infer from this that the problem is very likely not in how 'any' counts 
items.  

This also applies to subtract and multiply.  I suspect that random(16) is being 
evaluated twice based on a first glance at the pattern.  Because of that, my 
guess is that this bug will not cause a crash.  

The problem also occurs when I use my own random function.  

it looks as though this...
        add 1 to any item of x
... is being evaluated as...
        put 1 + any item of x into any item of x
... which is incorrect.

Perhaps that is just the info needed for a quick fix.  

This also will show up for any function with side effects built-in or not, so 
this is a far ranging bug and it should be pushed up in priority.  

Dar


> On Jun 5, 2016, at 8:48 AM, Mark Schonewille 
> <m.schonewi...@economy-x-talk.com> wrote:
> 
> Hi Quentin,
> 
> I see the same results, when I try your code. However, if I first store the 
> random value and add 1 to an item in the string in the next line in the 
> script, it works correctly. Apparently, the random function and the add 
> command are incompatible.
> 
> on mouseUp
>   put "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" into myVar
>   repeat 100
>      put random(16) into myRandom
>      add 1 to item myRandom of myVar
>      put myVar & cr after myTempList
>   end repeat
>   put sum(myVar) & cr & myTempList
> end mouseUp
> 
> Kind regards,
> 
> Mark Schonewille
> http://economy-x-talk.com
> https://www.facebook.com/marksch
> 
> Buy the most extensive book on the
> LiveCode language:
> http://livecodebeginner.economy-x-talk.com
> 
> Op 05-Jun-16 om 16:12 schreef Quentin Long:
>> Code which exhibits the bug:
>> 
>> on mouseUp
>>   put "0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0" into Fred
>>   repeat 100 times
>>      add 1 to any item of Fred
>>      put Fred into line (1 + the number of lines in fld "testbed") of fld 
>> "testbed"
>>   end repeat
>>   put sum (Fred) into line (1 + the number of lines in fld "testbed") of fld 
>> "testbed"
>> end mouseUp
>> 
>> This handler *should* end up generating a 16-item string of integers which 
>> sum to exactly 100. What it *actually does* end up generating, is a 16-item 
>> string of integers whose sum may or may not fall somewhere within the range 
>> 80-120. Not sure what the hell is going on here, but I am not at all happy 
>> about it. Perhaps other people might like to try this code on their systems, 
>> and see if it works as intended for them?
>> 
>> http://quality.livecode.com/show_bug.cgi?id=17795
>> 
> 
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode@lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription 
> preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode


_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to