public LSL_String llInsertString(string dest, int index, string src)
{
if (!ScriptProtection.CheckThreatLevel(ThreatLevel.None, "LSL", m_host, "LSL", m_itemID)) return new LSL_String();
// Normalize indices (if negative).
// After normlaization they may still be
// negative, but that is now relative to
// the start, rather than the end, of the
// sequence.
if (index < 0)
{
index = dest.Length + index;
// Negative now means it is less than the lower
// bound of the string.
if (index < 0)
{
return src + dest;
}
}
if (index >= dest.Length)
{
return dest + src;
}
// The index is in bounds.
// In this case the index refers to the index that will
// be assigned to the first character of the inserted string.
// So unlike the other string operations, we do not add one
// to get the correct string length.
return dest.Substring(0, index) + src + dest.Substring(index);
}