The only other affected situation in run_robot is copy block X Y W H $string T. The set/inc/dec commands, placing string MZMs, loading string charsets, loading string palettes, and saving string MZMs are not affected by this, as they perform tr_msg before checking if any relevant params are a string.
Examples:
False negative when interpolating a string index into the name (string_type/is_string checks for a . anywhere to determine if it's an index):
set "$string1.0" to 9 set "$string&$string1.0&" to "a" if "$string&$string1.0&" = "a" then "ok" * "oh no" end : "ok" * "ok"
False negative when interpolating a string starting with '$' as the start of the name (the '$' at the start isn't present until after tr_msg):
set "$string1" to "_string2" set "$string1.0" to 36 set "$string2" to "test" set "test" to 12345 if "&$string1&" = "test" then "ok" * "oh no" end : "ok" * "ok"
Note that the expected behavior above WORKS for the second param of the check as long as the first param starts with a $. This also works with the the set command starting from 2.68, i.e. this code displays "test" in all versions including and after 2.68, so the behavior above should be valid:
set "$string1" to "_string2" set "$string1.0" to 36 set "&$string1&" to "test" * "&$string2&"
False positive when interpolating an offset/limit/splice into the name (is_string stops checking for a . at the first + or #):
set "$" to "test" set "$testtest" to "a" if "$test&$&.0" = 97 then "ok" if "$test&$#4&.0" = 97 then "ok" * "oh no" end : "ok" * "ok"
The if command could probably be fixed pretty easily and I doubt this needs a compatibility check, but copy block $string looks a little more annoying to fix due to the very specific way its params are evaluated (fixing this would involve changing the way and order they're evaluated in this specific case, which probably isn't as big a deal as it sounds).
I haven't tried to determine if anywhere outside of run_robot is affected by this, but I doubt it. Edit: expr.c; all cases there appear to properly handle this.

Help
This issue is locked

