Fix llDumpList2String disaster with string addition

The node containing the separator was not being copied; if it was modified by a later optimization step, the modification propagated to all previous nodes that contained it, causing incorrect results.

Many thanks to @KrsityKu for reporting and providing a repro.

Fixes #23.
This commit is contained in:
Sei Lisa 2023-02-26 09:41:46 +01:00
parent d6162dfcf2
commit d58217ad96
4 changed files with 24 additions and 1 deletions

View file

@ -0,0 +1,11 @@
default
{
state_entry()
{
string tmp0 = llGetScriptName();
list tmp1 = [llGetOwner(), llGetOwner()];
list tmp2 = [llGetScriptName(), llGetScriptName()];
string encoded = llDumpList2String([tmp0, llList2CSV(tmp1), "Hello", 123, llList2CSV(tmp2)], "|");
llOwnerSay(encoded);
}
}

View file

@ -0,0 +1,11 @@
default
{
state_entry()
{
string tmp0 = llGetScriptName();
list tmp1 = (list)llGetOwner() + llGetOwner();
list tmp2 = (list)llGetScriptName() + llGetScriptName();
string encoded = tmp0 + ("|" + (llList2CSV(tmp1) + ("|Hello|123|" + llList2CSV(tmp2))));
llOwnerSay(encoded);
}
}

View file

@ -0,0 +1 @@
./main.py -O addstrings -