> It looks like /autopilot/locks/speed is a string field. It appears
> that "" no longer equals 0. My assumption when I wrote the script
> (hehe, I think I wrote that script, apologies to whoever if I
> didn't) was that for the comparison with zero, auto.getValue() would
> be converted to a compatible type before the comparison. If this
> isn't the case, then I should probably test if auto.getValue() == ""
> instead ...
Heh, good catch. You're right, this (probably) *was* exposed by the
recent changes. The proximate bug was that the constant "" used to
have a numerical value of zero (which is incorrect and was fixed) and
was (probably) being folded together with another constant with a
value of 0 (like "0.0", or the actual number zero).
The real bug, though, was that "" does not have (and never had) a
*boolean* value of false, so the "or" operator (which used to be
getting a numerical zero, which is false) now sees it as true.
This is fixed in my Nasal tree (which has lots of new goodies*). I'll
commit a patch to SimGear to fix it there too.
* It's about 3x faster, has optional named function arguments, local
variable declarations, is properly tail recursive, and has grown by
only about 20% or so in code size. New release is pending as soon
as I finish some library stuff, including a sprintf() wrapper.
Flightgear-devel mailing list