In Mono, if a script is set to not running during a function call, subsequent code is not run when script execution continues.
This occurs only when the script is disabled via llSetScriptState(). How the script is resumed is irrelevant.
Proof of concept:
Note that in LSL2, llSetScriptState is asynchronous, so the text will get spit out before the script stops running.
That REALLY needs to be fixed. In Mono, the text will never see the light of day.
Even this will fail:
This bug effectively breaks synchronous cross-script communication, and WILL break scripts that rely on
llSetScriptState() to disable/enable modules and plugin scripts.
Suggestion:
- Make llSetScriptState() synchronous in LSL2 (as it should be in the first place).
- Make sure subsequent code executes in Mono when the script resumes.
- PLEASE PLEASE PLEASE Fix this!
I actually don't recommend changing LSL2, as that behavior change might break content, but we should ensure proper behavior for Mono.
Importing into internal JIRA.