Skip to content

Commit

Permalink
fix for arrays
Browse files Browse the repository at this point in the history
  • Loading branch information
nilproject committed Dec 5, 2024
1 parent 7f02e72 commit af5d251
Showing 1 changed file with 18 additions and 5 deletions.
23 changes: 18 additions & 5 deletions NiL.JS/Core/SparseArray.cs
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ private void rebuildSegmentToSparse(int realSegmentIndex, TValue[] values)

_navyData[realSegmentIndex] = new NavyItem[len];

var bias = realSegmentIndex * SegmentSize;
var bias = _segmentsNavyData[realSegmentIndex].index * SegmentSize;

if (typeof(TValue).IsClass)
{
Expand Down Expand Up @@ -266,6 +266,7 @@ private enum FindNearestMode { NotLess, NotMore }
mask = SegmentSize >> 1;
var n = _navyData[realSegmentIndex][0];
var itemIndex = 0;
var nestedAlterI = -1;
while (true)
{
if (n.index >= index)
Expand All @@ -276,12 +277,24 @@ private enum FindNearestMode { NotLess, NotMore }
if (itemIndex == 0)
{
if (n.oneContinue == 0)
break;

nextIndex = n.oneContinue;
{
if (nestedAlterI == -1)
break;

mask = 0;
n = _navyData[realSegmentIndex][nestedAlterI];
itemIndex = nestedAlterI;
nestedAlterI = -1;
continue;
}

itemIndex = n.oneContinue;
mask = 0;
}

if (itemIndex != n.oneContinue && n.oneContinue != 0)
nestedAlterI = n.oneContinue;

mask >>= 1;
n = _navyData[realSegmentIndex][itemIndex];
}
Expand Down Expand Up @@ -364,7 +377,7 @@ private enum FindNearestMode { NotLess, NotMore }
if (n.zeroContinue == 0)
return (realSegmentIndex, (int)navyItem.index, itemIndex);

nextIndex = n.zeroContinue;
itemIndex = n.zeroContinue;
mask = int.MaxValue;
}

Expand Down

0 comments on commit af5d251

Please sign in to comment.