From a43706862c13944c92b3762ed8742415a0363275 Mon Sep 17 00:00:00 2001
From: Alan M Webb
Date: Tue, 29 Sep 2009 07:10:54 -0400
Subject:   Given the perverse way that strided works, if   there is only one
 element in the range, it must   also coincide with the specified stride. The 
  existing code assumes that the stride starts at   start ( which is the
 expected and most useful   behavior).

Signed-off-by: dr scofield (aka dirk husemann) <drscofield@xyzzyxyzzy.net>
---
 .../Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs  | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

(limited to 'OpenSim/Region')

diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 1ebe24e..0bd6546 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -4999,6 +4999,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
             if (end > src.Length)
                 end = src.Length;
 
+            if (stride == 0)
+                stride = 1;
+
             //  There may be one or two ranges to be considered
 
             if (start != end)
@@ -5025,9 +5028,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
                 //  A negative stride reverses the direction of the
                 //  scan producing an inverted list as a result.
 
-                if (stride == 0)
-                    stride = 1;
-
                 if (stride > 0)
                 {
                     for (int i = 0; i < src.Length; i += stride)
@@ -5051,7 +5051,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
             }
             else
             {
-                result.Add(src.Data[start]);
+                if (start%stride == 0)
+                {
+                    result.Add(src.Data[start]);
+                }
             }
 
             return result;
-- 
cgit v1.1