Best Answer
This bug occurs in certain cases where an empty string is assigned to a variable which contains an unflushed binary number and has zero capacity. As a side-effect of the assignment, the binary number is flushed and although the value is overwritten by the assignment, the length of the previous value is used in place of the length (0) of the new value (an empty string). Because the length is non-zero and the value is not an integer, the value is considered
true.
An expression like
i ": " v
causes the cached binary number to be "flushed"; that is, the variable is updated to contain a string representation of the number in addition to the binary number. In this case, to avoid the bug the expression must be evaluated in the
first iteration, while v contains a number.
While trying to simplify the code to reproduce this bug, I found a related bug. This one can be reproduced in v1.0.48.05 and later (and a few versions earlier):
s := 0+1234
s := zero_capacity_var "!"
MsgBox % s ; 1234!
Fixes for both bugs will be included in the next release.