Fix Issue 22745 - std.parallelism.parallel fails to process empty range on a single CPU

This commit is contained in:
Martin Kinkelin 2022-11-30 22:31:57 +01:00 committed by Mathias LANG
parent 6dd97525cd
commit 5645d87eb1

View file

@ -1508,7 +1508,7 @@ public:
if (this.size == 0)
{
return rangeLen;
return max(rangeLen, 1);
}
immutable size_t eightSize = 4 * (this.size + 1);
@ -3644,6 +3644,15 @@ ParallelForeach!R parallel(R)(R range, size_t workUnitSize)
assert(arrIndex.sum == 10.iota.sum);
}
// https://issues.dlang.org/show_bug.cgi?id=22745
@system unittest
{
auto pool = new TaskPool(0);
int[] empty;
foreach (i; pool.parallel(empty)) {}
pool.finish();
}
// Thrown when a parallel foreach loop is broken from.
class ParallelForeachError : Error
{