aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2013-09-16 23:00:40 +0100
committerJustin Clark-Casey (justincc)2013-09-20 21:39:10 +0100
commit6f5fd067a5f6edbd2c472bfb20351d511793fe66 (patch)
tree34d3c2d805a906dad09992b575a7921fae96e3ae
parentMake llGetLinkPrimitiveParams() abort and return existing list of params when... (diff)
downloadopensim-SC_OLD-6f5fd067a5f6edbd2c472bfb20351d511793fe66.zip
opensim-SC_OLD-6f5fd067a5f6edbd2c472bfb20351d511793fe66.tar.gz
opensim-SC_OLD-6f5fd067a5f6edbd2c472bfb20351d511793fe66.tar.bz2
opensim-SC_OLD-6f5fd067a5f6edbd2c472bfb20351d511793fe66.tar.xz
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
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs4
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiObjectTests.cs14
2 files changed, 16 insertions, 2 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index bd451a5..975bf2d 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -8202,7 +8202,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
8202 else 8202 else
8203 remaining = GetAgentParams((ScenePresence)entity, rules, ref result); 8203 remaining = GetAgentParams((ScenePresence)entity, rules, ref result);
8204 8204
8205 if (remaining == null || remaining.Length <= 2) 8205 if (remaining == null || remaining.Length < 2)
8206 return result; 8206 return result;
8207 8207
8208 int linknumber = remaining.GetLSLIntegerItem(0); 8208 int linknumber = remaining.GetLSLIntegerItem(0);
@@ -8786,7 +8786,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
8786 case (int)ScriptBaseClass.PRIM_LINK_TARGET: 8786 case (int)ScriptBaseClass.PRIM_LINK_TARGET:
8787 8787
8788 // TODO: Should be issuing a runtime script warning in this case. 8788 // TODO: Should be issuing a runtime script warning in this case.
8789 if (remain < 3) 8789 if (remain < 2)
8790 return null; 8790 return null;
8791 8791
8792 return rules.GetSublist(idx, -1); 8792 return rules.GetSublist(idx, -1);
diff --git a/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiObjectTests.cs b/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiObjectTests.cs
index ff87cc1..ed61dc0 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiObjectTests.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Tests/LSL_ApiObjectTests.cs
@@ -100,6 +100,20 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
100 Assert.That(resList.Length, Is.EqualTo(1)); 100 Assert.That(resList.Length, Is.EqualTo(1));
101 } 101 }
102 102
103 // Check 2 prim case
104 {
105 LSL_List resList
106 = apiGrp1.llGetLinkPrimitiveParams(
107 1,
108 new LSL_List(
109 new LSL_Integer(ScriptBaseClass.PRIM_ROTATION),
110 new LSL_Integer(ScriptBaseClass.PRIM_LINK_TARGET),
111 new LSL_Integer(2),
112 new LSL_Integer(ScriptBaseClass.PRIM_ROTATION)));
113
114 Assert.That(resList.Length, Is.EqualTo(2));
115 }
116
103 // Check invalid parameters are ignored 117 // Check invalid parameters are ignored
104 { 118 {
105 LSL_List resList 119 LSL_List resList