diff --git a/lslopt/lslfuncopt.py b/lslopt/lslfuncopt.py index 809444d..91dc16c 100644 --- a/lslopt/lslfuncopt.py +++ b/lslopt/lslfuncopt.py @@ -305,7 +305,7 @@ def OptimizeFunc(self, parent, index): newnode = nr(nt='+', t='string', SEF=True, ch=[CastDL2S(self, child[0], i), nr(nt='+', t='string', SEF=True, - ch=[self.Cast(child[1], 'string'), newnode] + ch=[self.Cast(child[1], 'string').copy(), newnode] ) ]) parent[index] = newnode diff --git a/unit_tests/regression.suite/issue-23.lsl b/unit_tests/regression.suite/issue-23.lsl new file mode 100644 index 0000000..8195bed --- /dev/null +++ b/unit_tests/regression.suite/issue-23.lsl @@ -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); + } +} diff --git a/unit_tests/regression.suite/issue-23.out b/unit_tests/regression.suite/issue-23.out new file mode 100644 index 0000000..8c27c48 --- /dev/null +++ b/unit_tests/regression.suite/issue-23.out @@ -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); + } +} diff --git a/unit_tests/regression.suite/issue-23.run b/unit_tests/regression.suite/issue-23.run new file mode 100644 index 0000000..e76e2cd --- /dev/null +++ b/unit_tests/regression.suite/issue-23.run @@ -0,0 +1 @@ +./main.py -O addstrings -