Fix bug where using PRIM_LINK_TARGET with only two remaining list items (e.g. link number then PRIM_ROTATION) would not return the parameter

Extended regression test for this case
varregion
Justin Clark-Casey (justincc) 2013-09-16 23:00:40 +01:00
parent 60cf42cb8d
commit f99dae03cb
2 changed files with 16 additions and 2 deletions

View File

@ -8202,7 +8202,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
else else
remaining = GetAgentParams((ScenePresence)entity, rules, ref result); remaining = GetAgentParams((ScenePresence)entity, rules, ref result);
if (remaining == null || remaining.Length <= 2) if (remaining == null || remaining.Length < 2)
return result; return result;
int linknumber = remaining.GetLSLIntegerItem(0); int linknumber = remaining.GetLSLIntegerItem(0);
@ -8786,7 +8786,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
case (int)ScriptBaseClass.PRIM_LINK_TARGET: case (int)ScriptBaseClass.PRIM_LINK_TARGET:
// TODO: Should be issuing a runtime script warning in this case. // TODO: Should be issuing a runtime script warning in this case.
if (remain < 3) if (remain < 2)
return null; return null;
return rules.GetSublist(idx, -1); return rules.GetSublist(idx, -1);

View File

@ -100,6 +100,20 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
Assert.That(resList.Length, Is.EqualTo(1)); Assert.That(resList.Length, Is.EqualTo(1));
} }
// Check 2 prim case
{
LSL_List resList
= apiGrp1.llGetLinkPrimitiveParams(
1,
new LSL_List(
new LSL_Integer(ScriptBaseClass.PRIM_ROTATION),
new LSL_Integer(ScriptBaseClass.PRIM_LINK_TARGET),
new LSL_Integer(2),
new LSL_Integer(ScriptBaseClass.PRIM_ROTATION)));
Assert.That(resList.Length, Is.EqualTo(2));
}
// Check invalid parameters are ignored // Check invalid parameters are ignored
{ {
LSL_List resList LSL_List resList