Fix several calls that had wraparound hazards.
llGetSubString("abc", 3, -1) gives "abc"; llList2List(L, 1, -1) gives L when L has length 1. In general, llGetSubString or llList2List return the whole thing when the starting index is grater than the last element in the list. There were a number of spots with that hazard, so fix all we found.
This commit is contained in:
parent
aa9cba13a5
commit
bf8f10bfe6
15 changed files with 39 additions and 39 deletions
|
@ -109,7 +109,7 @@ default
|
|||
|
||||
state_entry()
|
||||
{
|
||||
SCRIPT_CHANNEL = (integer)llGetSubString(llGetScriptName(), llSubStringIndex(llGetScriptName(), " "), -1);
|
||||
SCRIPT_CHANNEL = (integer)llGetSubString(llGetScriptName(), llSubStringIndex(llGetScriptName(), " "), 99999);
|
||||
notecard_key = llGetInventoryKey(notecard_name);
|
||||
if (llGetInventoryType(notecard_name) == INVENTORY_NOTECARD)
|
||||
{
|
||||
|
@ -225,10 +225,10 @@ default
|
|||
}
|
||||
else
|
||||
{
|
||||
data = llGetSubString(data, llSubStringIndex(data, "◆") + 1, -1);
|
||||
data = llGetSubString(data, llSubStringIndex(data, "◆") + 1, 99999);
|
||||
data = llStringTrim(data, STRING_TRIM);
|
||||
string command = llGetSubString(data, 0, llSubStringIndex(data, " ") - 1);
|
||||
list parts = llParseStringKeepNulls(llGetSubString(data, llSubStringIndex(data, " ") + 1, -1), [" | ", " |", "| ", "|"], []);
|
||||
list parts = llParseStringKeepNulls(llGetSubString(data, llSubStringIndex(data, " ") + 1, 99999), [" | ", " |", "| ", "|"], []);
|
||||
string part0 = llStringTrim(llList2String(parts, 0), STRING_TRIM);
|
||||
if (command == "SITTER")
|
||||
{
|
||||
|
@ -236,7 +236,7 @@ default
|
|||
}
|
||||
else if (notecard_section == SCRIPT_CHANNEL && command == "CAMERA")
|
||||
{
|
||||
string part1 = llStringTrim(llDumpList2String(llList2List(parts, 1, -1), "|"), STRING_TRIM);
|
||||
string part1 = llStringTrim(llDumpList2String(llList2List(parts, 1, 99999), "|"), STRING_TRIM);
|
||||
list sequence = llParseString2List(part1, ["|"], []);
|
||||
camera_triggers += part0;
|
||||
camera_settings += part1;
|
||||
|
|
|
@ -177,7 +177,7 @@ default
|
|||
{
|
||||
data = llStringTrim(data, STRING_TRIM);
|
||||
string command = llGetSubString(data, 0, llSubStringIndex(data, " ") - 1);
|
||||
list parts = llParseStringKeepNulls(llGetSubString(data, llSubStringIndex(data, " ") + 1, -1), [" | ", " |", "| ", "|"], []);
|
||||
list parts = llParseStringKeepNulls(llGetSubString(data, llSubStringIndex(data, " ") + 1, 99999), [" | ", " |", "| ", "|"], []);
|
||||
if (command == "TIMER")
|
||||
{
|
||||
TIMER_DEFAULT = llList2Integer(parts, 0);
|
||||
|
|
|
@ -1209,7 +1209,7 @@ state running
|
|||
{
|
||||
data = llStringTrim(data, STRING_TRIM);
|
||||
string command = llGetSubString(data, 0, llSubStringIndex(data, " ") - 1);
|
||||
list parts = llParseStringKeepNulls(llGetSubString(data, llSubStringIndex(data, " ") + 1, -1), [" | ", " |", "| ", "|"], []);
|
||||
list parts = llParseStringKeepNulls(llGetSubString(data, llSubStringIndex(data, " ") + 1, 99999), [" | ", " |", "| ", "|"], []);
|
||||
string part0 = llStringTrim(llList2String(parts, 0), STRING_TRIM);
|
||||
part0 = llGetSubString(part0, 0, 22);
|
||||
if (command == "WAITPOSE")
|
||||
|
|
|
@ -88,7 +88,7 @@ Readout_Say(string say, string SCRIPT_CHANNEL)
|
|||
|
||||
string Key2Number(key objKey)
|
||||
{
|
||||
return llGetSubString((string)llAbs((integer)("0x" + llGetSubString((string)objKey, -8, -1)) & 1073741823 ^ -1073741825), 6, -1);
|
||||
return llGetSubString((string)llAbs((integer)("0x" + llGetSubString((string)objKey, -8, -1)) & 0x3FFFFFFF ^ 0xBFFFFFFF), 6, 99999);
|
||||
}
|
||||
|
||||
init_sitters()
|
||||
|
@ -416,10 +416,10 @@ default
|
|||
}
|
||||
else
|
||||
{
|
||||
data = llGetSubString(data, llSubStringIndex(data, "◆") + 1, -1);
|
||||
data = llGetSubString(data, llSubStringIndex(data, "◆") + 1, 99999);
|
||||
data = llStringTrim(data, STRING_TRIM);
|
||||
string command = llGetSubString(data, 0, llSubStringIndex(data, " ") - 1);
|
||||
list parts = llParseStringKeepNulls(llGetSubString(data, llSubStringIndex(data, " ") + 1, -1), [" | ", " |", "| ", "|"], []);
|
||||
list parts = llParseStringKeepNulls(llGetSubString(data, llSubStringIndex(data, " ") + 1, 99999), [" | ", " |", "| ", "|"], []);
|
||||
if (command == "SITTER")
|
||||
{
|
||||
notecard_section = llList2Integer(parts, 0);
|
||||
|
|
|
@ -269,7 +269,7 @@ integer prop_menu(integer return_pages, key av)
|
|||
}
|
||||
else
|
||||
{
|
||||
menu_items1 += llGetSubString(llList2String(llParseString2List(llList2String(MENU_LIST, i), ["|"], []), 0), 2, -1);
|
||||
menu_items1 += llGetSubString(llList2String(llParseString2List(llList2String(MENU_LIST, i), ["|"], []), 0), 2, 99999);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -589,15 +589,15 @@ default
|
|||
}
|
||||
else
|
||||
{
|
||||
data = llGetSubString(data, llSubStringIndex(data, "◆") + 1, -1);
|
||||
data = llGetSubString(data, llSubStringIndex(data, "◆") + 1, 99999);
|
||||
data = llStringTrim(data, STRING_TRIM);
|
||||
string command = llGetSubString(data, 0, llSubStringIndex(data, " ") - 1);
|
||||
list parts = llParseStringKeepNulls(llGetSubString(data, llSubStringIndex(data, " ") + 1, -1), [" | ", " |", "| ", "|"], []);
|
||||
list parts = llParseStringKeepNulls(llGetSubString(data, llSubStringIndex(data, " ") + 1, 99999), [" | ", " |", "| ", "|"], []);
|
||||
string part0 = llStringTrim(llList2String(parts, 0), STRING_TRIM);
|
||||
string part1 = llList2String(parts, 1);
|
||||
if (llGetListLength(parts) > 1)
|
||||
{
|
||||
part1 = llStringTrim(llDumpList2String(llList2List(parts, 1, -1), SEP), STRING_TRIM);
|
||||
part1 = llStringTrim(llDumpList2String(llList2List(parts, 1, 99999), SEP), STRING_TRIM);
|
||||
}
|
||||
if (command == "TEXT")
|
||||
{
|
||||
|
|
|
@ -378,7 +378,7 @@ default
|
|||
{
|
||||
if (llList2Key(SITTERS, i) == sitting_av_or_sitter || id == "" || (string)sitting_av_or_sitter == (string)i)
|
||||
{
|
||||
remove_sitter_props_by_pose((string)i + "|" + llGetSubString(msg, 8, -1), TRUE);
|
||||
remove_sitter_props_by_pose((string)i + "|" + llGetSubString(msg, 8, 99999), TRUE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -603,10 +603,10 @@ default
|
|||
return;
|
||||
}
|
||||
|
||||
data = llGetSubString(data, llSubStringIndex(data, "◆") + 1, -1);
|
||||
data = llGetSubString(data, llSubStringIndex(data, "◆") + 1, 99999);
|
||||
data = llStringTrim(data, STRING_TRIM);
|
||||
string command = llGetSubString(data, 0, llSubStringIndex(data, " ") - 1);
|
||||
list parts = llParseStringKeepNulls(llGetSubString(data, llSubStringIndex(data, " ") + 1, -1), [" | ", " |", "| ", "|"], []);
|
||||
list parts = llParseStringKeepNulls(llGetSubString(data, llSubStringIndex(data, " ") + 1, 99999), [" | ", " |", "| ", "|"], []);
|
||||
if (command == "SITTER")
|
||||
{
|
||||
notecard_section = (integer)llList2String(parts, 0);
|
||||
|
|
|
@ -269,7 +269,7 @@ default
|
|||
{
|
||||
list datalist = llParseString2List(data, [" "], []);
|
||||
string command = llList2String(datalist, 0);
|
||||
data = llStringTrim(llDumpList2String(llList2List(datalist, 1, -1), " "), STRING_TRIM);
|
||||
data = llStringTrim(llDumpList2String(llList2List(datalist, 1, 99999), " "), STRING_TRIM);
|
||||
list commands = ["PLAY", "WAIT", "SAY", "WHISPER", "SOUND", "LOOP"];
|
||||
if (command == "DEBUG")
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue