diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-06-23 00:47:30 +0400 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-06-23 00:48:00 +0400 |
commit | 0567715a6b948cbb1251957f7550645d1726cfa0 (patch) | |
tree | a3eca9a19f4761f10025ca821ffdfa0da86c352b | |
parent | e847f4128543432a77fb8f85c313646a406c76f6 (diff) |
qsort: flip compare direction to match libc qsort()
Found-by: ubitux
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavutil/qsort.h | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/libavutil/qsort.h b/libavutil/qsort.h index 089eb74fdf..30edcc8371 100644 --- a/libavutil/qsort.h +++ b/libavutil/qsort.h @@ -41,23 +41,23 @@ type *right = end-2;\ type *left = start+1;\ type *mid = start + ((end-start)>>1);\ - if(cmp(start, end) < 0) {\ - if(cmp( end, mid) < 0) FFSWAP(type, *start, *mid);\ + if(cmp(start, end) > 0) {\ + if(cmp( end, mid) > 0) FFSWAP(type, *start, *mid);\ else FFSWAP(type, *start, *end);\ }else{\ - if(cmp(start, mid) < 0) FFSWAP(type, *start, *mid);\ + if(cmp(start, mid) > 0) FFSWAP(type, *start, *mid);\ else checksort= 1;\ }\ - if(cmp(mid, end) < 0){ \ + if(cmp(mid, end) > 0){ \ FFSWAP(type, *mid, *end);\ checksort=0;\ }\ if(start == end-2) break;\ FFSWAP(type, end[-1], *mid);\ while(left <= right){\ - while(left<=right && cmp(left, end-1) > 0)\ + while(left<=right && cmp(left, end-1) < 0)\ left++;\ - while(left<=right && cmp(right, end-1) < 0)\ + while(left<=right && cmp(right, end-1) > 0)\ right--;\ if(left <= right){\ FFSWAP(type, *left, *right);\ @@ -68,7 +68,7 @@ FFSWAP(type, end[-1], *left);\ if(checksort && (mid == left-1 || mid == left)){\ mid= start;\ - while(mid<end && cmp(mid, mid+1) >= 0)\ + while(mid<end && cmp(mid, mid+1) <= 0)\ mid++;\ if(mid==end)\ break;\ @@ -83,7 +83,7 @@ end = right;\ }\ }else{\ - if(cmp(start, end) < 0)\ + if(cmp(start, end) > 0)\ FFSWAP(type, *start, *end);\ break;\ }\ @@ -104,7 +104,7 @@ unsigned a[2] = {i, i+step};\ unsigned end = FFMIN(i+2*step, (num));\ for(j=i; a[0]<i+step && a[1]<end; j++){\ - int idx= cmp(p+a[0], p+a[1]) < 0;\ + int idx= cmp(p+a[0], p+a[1]) > 0;\ tmp[j] = p[ a[idx]++ ];\ }\ if(a[0]>=i+step) a[0] = a[1];\ |