Empty string changes to empty key on region crossing
complete
Thunder Rahja
One of my HUDs started producing errors only after I recompiled it from LSL/Mono to LSL/Luau due to an empty string
""
being changed to an empty key, after every region crossing, before being passed to llSetLinkPrimitiveParamsFast
. I distilled the issue down to this script:list myList = [""];
key someKey; // this must be below myList to reproduce this bug
default
{
touch_start(integer total_number)
{
if (llListFindList(myList, [(key)""]) != -1) // we found an empty key in the list
{
llOwnerSay("FAIL: The empty string was changed to an empty key. Resetting...");
llResetScript();
}
else llOwnerSay("PASS: The empty string is still an empty string.");
}
}
Steps to reproduce
- Teleport to any Luau test region.
- Create an object and attach it to your avatar.
- Create a new script in that object and paste the above code into the script editor window.
- Change the compiler to LSL/Luau and then save the script.
- Click the object. It will output "PASS."
- Walk into an adjacent Luau test region.
- Click the object again. It will output "FAIL."
Affected versions
- Luau 2025-03-10.13758278457
Log In
H
Harold Linden
complete
This should be fixed now. Our script state serialization logic wasn't accounting for the internal
string
instance within uuid
s when keeping track of objects it had seen before, and accidentally caused Lua strings with the same value to become uuid
s on deserialization. We've fixed that accounting.Signal Linden
planned
This is a bug in serialization. We'll get it fixed: thanks for the report!