Basically on storing a string of 2180 characters in the object description, I found that on reading it back, initially randomly, it only read back 255 characters.
I wrote a second script on a clean object to prove the error. On testing with some friends, i found that the object is fine, as long as no one touches it or clicks it (even if it has no touch event handlers). As soon as somone clicks on the object, the string read back is then truncated to 255 characters.
The following script was used on the object.
string sString = "";
integer iRequiredLength = 3000;
integer iActualLength = 0;
string sBlank10 = "0123456789";
default
{
state_entry()
{
//Get the string from the description
sString = llGetObjectDesc();
//wait a bit to ensure the description has be loaded
llSleep(2.0);
//get the length of the loaded string
iActualLength = llStringLength(sString);
llWhisper(0,"On start of state_entry string length is " + (string)iActualLength + " chracters.");
//if the string length is not the requiredlength then create new string
if (iActualLength != iRequiredLength)
{
llWhisper(0,"We require a string built that is " + (string)iRequiredLength + " characters.");
//form a new string of the require length
integer x = 0;
integer p = iRequiredLength / 10;
sString = "";
//build the string (in blocks of 10 characters at a time)
for (x = 1; x <= p; x++)
{
sString = llInsertString(sString, x*10, sBlank10);
}
//get the length of the newly formed string
iActualLength = llStringLength(sString);
llWhisper(0,"Newly formed string length is " + (string)iActualLength + " chracters.");
//Write this string to the description field
llSetObjectDesc(sString);
//Wait a second or two
llSleep(2.0);
//Reset the string
sString = "";
iActualLength = llStringLength(sString);
llWhisper(0, "The newly formed string has been reset to " + (string)iActualLength + " characters.");
//wait a bit more to be sure to be sure
llSleep(2.0);
}
//Now Read back to ensure the description has the string
sString = llGetObjectDesc();
//wait again to ensure the string has been loaded
llSleep(2.0);
//get the length of the loaded string
iActualLength = llStringLength(sString);
llWhisper(0, "On Finish of state_entry string length is " + (string)iActualLength + " characters.");
//Wait a tiny bit longer
llSleep(2.0);
//Reset the script, and let it go round again
llResetScript();
}
}
https://wiki.secondlife.com/wiki/LlSetObjectDesc
Being able to set the description to more than 127 characters is possible, but it may change to only 127 characters and break scripts that relied on more.
[Triage: I suggest to import the issue to re-confirm from Lindens that it is still the intention of the servers to only support 127 characters. In any event, update the wiki with the limit that the servers intend to support.]