aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
authorMelanie2012-03-05 11:54:06 +0100
committerMelanie2012-03-05 11:54:06 +0100
commit97f0cff3885e00e7e56a6c7a5c59086d241c1f2e (patch)
tree7cbeef85e0f219ff5f5ef90a128cd3f4a1212a09 /OpenSim/Region
parentSL compatibility - return only points on segemtn, not ray in llCastRay (diff)
downloadopensim-SC-97f0cff3885e00e7e56a6c7a5c59086d241c1f2e.zip
opensim-SC-97f0cff3885e00e7e56a6c7a5c59086d241c1f2e.tar.gz
opensim-SC-97f0cff3885e00e7e56a6c7a5c59086d241c1f2e.tar.bz2
opensim-SC-97f0cff3885e00e7e56a6c7a5c59086d241c1f2e.tar.xz
llListSort SL compatibility: When sorting strided list and the list
length is not a multiple of the stride, return the original list. Also, enforce that sort is ascending only when the ascending parameter is 1, and not when it is != 0
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs7
1 files changed, 5 insertions, 2 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs b/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs
index 9e6752c..8adf4c5 100644
--- a/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs
@@ -858,7 +858,7 @@ namespace OpenSim.Region.ScriptEngine.Shared
858 ret = Math.Sign(Quaternion.Mag(l) - Quaternion.Mag(r)); 858 ret = Math.Sign(Quaternion.Mag(l) - Quaternion.Mag(r));
859 } 859 }
860 860
861 if (ascending == 0) 861 if (ascending != 1)
862 { 862 {
863 ret = 0 - ret; 863 ret = 0 - ret;
864 } 864 }
@@ -891,6 +891,9 @@ namespace OpenSim.Region.ScriptEngine.Shared
891 stride = 1; 891 stride = 1;
892 } 892 }
893 893
894 if ((Data.Length % stride) != 0)
895 return new list(ret);
896
894 // we can optimize here in the case where stride == 1 and the list 897 // we can optimize here in the case where stride == 1 and the list
895 // consists of homogeneous types 898 // consists of homogeneous types
896 899
@@ -910,7 +913,7 @@ namespace OpenSim.Region.ScriptEngine.Shared
910 if (homogeneous) 913 if (homogeneous)
911 { 914 {
912 Array.Sort(ret, new HomogeneousComparer()); 915 Array.Sort(ret, new HomogeneousComparer());
913 if (ascending == 0) 916 if (ascending != 1)
914 { 917 {
915 Array.Reverse(ret); 918 Array.Reverse(ret);
916 } 919 }