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>
0.6.8-post-fixes
Alan M Webb 2009-09-29 07:10:54 -04:00 committed by dr scofield (aka dirk husemann)
parent 77f5e41631
commit a43706862c
1 changed files with 7 additions and 4 deletions

View File

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