mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-08 19:48:20 +02:00
Harden softer against invalid comparers
This commit is contained in:
parent
12640fd2b7
commit
74294567e7
1 changed files with 17 additions and 2 deletions
|
@ -219,9 +219,24 @@ namespace System.Collections
|
||||||
|
|
||||||
while (left < right)
|
while (left < right)
|
||||||
{
|
{
|
||||||
while (comparer(keys[++left], pivot) < 0) {}
|
while (true)
|
||||||
while (comparer(pivot, keys[--right]) < 0) {}
|
{
|
||||||
|
left++;
|
||||||
|
if (left >= mCount)
|
||||||
|
Runtime.FatalError("Illegal comparer method. Comparer(lhs, rhs) must equal -Comparer(rhs, lhs).");
|
||||||
|
if (comparer(keys[++left], pivot) >= 0)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
right--;
|
||||||
|
if (right < 0)
|
||||||
|
Runtime.FatalError("Illegal comparer method. Comparer(lhs, rhs) must equal -Comparer(rhs, lhs).");
|
||||||
|
if (comparer(pivot, keys[right]) >= 0)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if(left >= right)
|
if(left >= right)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue