• All submissions to this site are governed by Second Life Project Contribution Agreement. By submitting patches and other information using this site, you acknowledge that you have read, understood, and agreed to those terms.
Issue Details (XML | Word | Printable)

Key: SVC-1515
Type: Bug Bug
Status: Resolved Resolved
Resolution: Fixed
Priority: Normal Normal
Assignee: Unassigned
Reporter: Jesse Barnett
Votes: 1
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
2. Second Life Service - SVC

MONO Beta: Searching multiple lists with llListFindList appends the lists

Created: 11/Feb/08 05:19 PM   Updated: 06/Mar/08 04:12 PM
Return to search
Component/s: Scripts
Affects Version/s: Mono Beta
Fix Version/s: None

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)
Issue Links:
Relates
 

Linden Lab Issue ID: DEV-11033


 Description  « Hide
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.



 All   Comments   Change History      Sort Order: Ascending order - Click to sort in descending order
Void Singer added a comment - 12/Feb/08 05:51 AM
this is bad, list find list should not be making an assignment on a concatenation without the assigment operator.

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


Periapse Linden added a comment - 06/Mar/08 04:04 PM
passed QA