X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=lib%2Farraysort.h;h=b47fa8c38ac5287142608e50b7ea713f43da8994;hb=c673da72822d7704572716de80402829921efdc3;hp=776051e932a21ea7e0bc0388c1cf62cdc32ac219;hpb=c5ddf95afd9ff0b2fcd765cc001d9a019899eeb0;p=libucw.git diff --git a/lib/arraysort.h b/lib/arraysort.h index 776051e9..b47fa8c3 100644 --- a/lib/arraysort.h +++ b/lib/arraysort.h @@ -53,7 +53,7 @@ #define ASORT_EXTRA_ARGS #endif -static void ASORT_PREFIX(sort)(uns array_size) +static void ASORT_PREFIX(sort)(uns array_size ASORT_EXTRA_ARGS) { struct stk { int l, r; } stack[8*sizeof(uns)]; int l, r, left, right, m; @@ -100,7 +100,7 @@ static void ASORT_PREFIX(sort)(uns array_size) } } while (l <= r); - if ((r - left) > ASORT_THRESHOLD && (right - l) > ASORT_THRESHOLD) + if ((r - left) >= ASORT_THRESHOLD && (right - l) >= ASORT_THRESHOLD) { /* Both partitions ok => push the larger one */ if ((r - left) > (right - l)) @@ -117,12 +117,12 @@ static void ASORT_PREFIX(sort)(uns array_size) } sp++; } - else if ((r - left) > ASORT_THRESHOLD) + else if ((r - left) >= ASORT_THRESHOLD) { /* Left partition OK, right undersize */ right = r; } - else if ((right - l) > ASORT_THRESHOLD) + else if ((right - l) >= ASORT_THRESHOLD) { /* Right partition OK, left undersize */ left = l; @@ -166,9 +166,9 @@ static void ASORT_PREFIX(sort)(uns array_size) } #undef ASORT_PREFIX -#undef ASORT_TYPE +#undef ASORT_KEY_TYPE #undef ASORT_ELT -#undef ASORT_EQ +#undef ASORT_LT #undef ASORT_SWAP #undef ASORT_THRESHOLD #undef ASORT_EXTRA_ARGS