mirror of
https://github.com/dlang/phobos.git
synced 2025-04-29 14:40:30 +03:00
Fix Issue 14223
This commit is contained in:
parent
323b512596
commit
4abe95ef5b
1 changed files with 12 additions and 10 deletions
|
@ -1225,17 +1225,16 @@ private template TimSortImpl(alias pred, R)
|
|||
// STACK is | ... e1 e2 e3 >
|
||||
while (stackLen > 1)
|
||||
{
|
||||
immutable run1 = stackLen - 4;
|
||||
immutable run2 = stackLen - 3;
|
||||
immutable run3 = stackLen - 2;
|
||||
immutable run4 = stackLen - 1;
|
||||
immutable run3 = stackLen - 2;
|
||||
immutable run2 = stackLen - 3;
|
||||
immutable run1 = stackLen - 4;
|
||||
|
||||
if (stackLen > 2 && stack[run2].length <= stack[run3].length + stack[run4].length ||
|
||||
stackLen > 3 && stack[run1].length <= stack[run3].length + stack[run2].length )
|
||||
if ( (stackLen > 2 && stack[run2].length <= stack[run3].length + stack[run4].length) ||
|
||||
(stackLen > 3 && stack[run1].length <= stack[run3].length + stack[run2].length) )
|
||||
{
|
||||
immutable at = stack[run2].length < stack[run4].length ? run2 : run3;
|
||||
mergeAt(range, stack[0 .. stackLen], at, minGallop, temp);
|
||||
|
||||
}
|
||||
else if (stack[run3].length > stack[run4].length) break;
|
||||
else mergeAt(range, stack[0 .. stackLen], run3, minGallop, temp);
|
||||
|
@ -1244,13 +1243,16 @@ private template TimSortImpl(alias pred, R)
|
|||
}
|
||||
|
||||
// Assert that the code above established the invariant correctly
|
||||
debug
|
||||
version (assert)
|
||||
{
|
||||
if (stackLen == 2) assert(stack[0].length > stack[1].length);
|
||||
else if (stackLen > 2) foreach(k; 2 .. stackLen)
|
||||
else if (stackLen > 2)
|
||||
{
|
||||
assert(stack[k - 2].length > stack[k - 1].length + stack[k].length);
|
||||
assert(stack[k - 1].length > stack[k].length);
|
||||
foreach(k; 2 .. stackLen)
|
||||
{
|
||||
assert(stack[k - 2].length > stack[k - 1].length + stack[k].length);
|
||||
assert(stack[k - 1].length > stack[k].length);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue