
| Key: |
SVC-1515
|
| Type: |
Bug
|
| Status: |
Resolved
|
| Resolution: |
Fixed
|
| Priority: |
Normal
|
| Assignee: |
Unassigned
|
| Reporter: |
Jesse Barnett
|
| Votes: |
1
|
| Watchers: |
0
|
|
If you were logged in you would be able to see more operations.
|
|
|
|
Environment:
|
CPU: AMD (Unknown model) (2004 MHz)
Memory: 2047 MB
OS Version: Microsoft Windows XP Service Pack 2 (Build 2600)
Graphics Card Vendor: NVIDIA Corporation
Graphics Card: GeForce 7900 GS/PCI/SSE2/3DNOW!
OpenGL Version: 2.1.2
LLMozLib Version: 1.1.0 (Mozilla GRE:1.8.0.12_0000000000)
CPU: AMD (Unknown model) (2004 MHz)
Memory: 2047 MB
OS Version: Microsoft Windows XP Service Pack 2 (Build 2600)
Graphics Card Vendor: NVIDIA Corporation
Graphics Card: GeForce 7900 GS/PCI/SSE2/3DNOW!
OpenGL Version: 2.1.2
LLMozLib Version: 1.1.0 (Mozilla GRE:1.8.0.12_0000000000)
|
|
Issue Links:
|
Relates
|
|
|
|
This issue is related to by:
|
|
|
|
|
|
|
|
| Linden Lab Issue ID: |
DEV-11033
|
For llDialog returns, I have always used something like this for searching multiple lists:
if (llListFindList(d_list + c_list, [msg]) != -1){
It will search through both lists "d_list" & "c_list" for a match. In MONO it is taking and appending the c_list to the d_list and then throwing an error: "Object: llDialog: button list too long, must be 12 or fewer entries". Even though d_list contains 7 items & c_list contains 6.
list a_list = ["a", "b", "c", "d", "e", "f"];
list b_list = ["integers"];
list c_list = ["1", "2", "3", "4", "5", "6"];
list d_list;
key owner;
integer chan = -87643;
default {
touch_start(integer n) {
owner = llGetOwner();
d_list = [];
d_list += b_list + a_list;
llListen(chan,"","","");
llDialog(owner,"test",d_list, chan);
}
listen(integer channel, string name, key id, string msg) {
if (llListFindList(d_list + c_list, [msg]) != -1){
llOwnerSay("@llListFindList; " + (string) d_list);///////////////////////d_list
if(msg == "integers"){
llOwnerSay(msg);
llDialog(owner, "integers", c_list, chan);
}
else
llOwnerSay(msg);
}
}
}
LSL1 returns: Object: @llListFindList; integersabcdef
MONO returns: Object: @llListFindList; integersabcdef123456(d_list has had the contents of the c_list appended onto the end)
NOTE: This may have been incorrect behaviour all along in LSL1, can not find any documentation that it should have worked that way.
|
|
Description
|
For llDialog returns, I have always used something like this for searching multiple lists:
if (llListFindList(d_list + c_list, [msg]) != -1){
It will search through both lists "d_list" & "c_list" for a match. In MONO it is taking and appending the c_list to the d_list and then throwing an error: "Object: llDialog: button list too long, must be 12 or fewer entries". Even though d_list contains 7 items & c_list contains 6.
list a_list = ["a", "b", "c", "d", "e", "f"];
list b_list = ["integers"];
list c_list = ["1", "2", "3", "4", "5", "6"];
list d_list;
key owner;
integer chan = -87643;
default {
touch_start(integer n) {
owner = llGetOwner();
d_list = [];
d_list += b_list + a_list;
llListen(chan,"","","");
llDialog(owner,"test",d_list, chan);
}
listen(integer channel, string name, key id, string msg) {
if (llListFindList(d_list + c_list, [msg]) != -1){
llOwnerSay("@llListFindList; " + (string) d_list);///////////////////////d_list
if(msg == "integers"){
llOwnerSay(msg);
llDialog(owner, "integers", c_list, chan);
}
else
llOwnerSay(msg);
}
}
}
LSL1 returns: Object: @llListFindList; integersabcdef
MONO returns: Object: @llListFindList; integersabcdef123456(d_list has had the contents of the c_list appended onto the end)
NOTE: This may have been incorrect behaviour all along in LSL1, can not find any documentation that it should have worked that way. |
Show » |
|
seems like they tried to speed it up by storing the concatenation in the first named variable instead of creating a temporary value for it