-
Notifications
You must be signed in to change notification settings - Fork 51
Open
Description
int t2 = graph.Dequeue();
GetRangesFromGraphIndex(t1, out NativeArray<int> start1, out NativeArray<int> end1);
GetRangesFromGraphIndex(t2, out NativeArray<int> start2, out NativeArray<int> end2);
NativeArray<int> startResult;
NativeArray<int> endResult;
if ((Operation)v == Operation.Or)
{
Or(start1, end1, start2, end2, out startResult, out endResult);
}
else if ((Operation)v == Operation.And)
{
And(start1, end1, start2, end2, out startResult, out endResult);
}
else // if ((Operation)v == Operation.Diff)
{
Diff(start1, end1, start2, end2, out startResult, out endResult);
}
// Enqueue results
startRanges.Add(startResult);
endRanges.Add(endResult);
graph.Enqueue(Tags.Length + startRanges.Count - 1);
This block can be entered such that GetRangesFromGraphIndex creates default arrays for start and end, like so:
start = new NativeArray<int>();
end = new NativeArray<int>();
return false;
This immediately throws an exception as soon as one of these routines tries to copy it, because these default constructed arrays are not actually allocated under the hood. This is the proper way to allocate them:
start = new NativeArray<int>(0, Allocator.Temp);
end = new NativeArray<int>(0, Allocator.Temp);
return false;
As always, thanks for this great project!
Metadata
Metadata
Assignees
Labels
No labels