@@ -32,11 +32,14 @@ static int argsort_cmp(const void *a, const void *b);
3232 * Function for qsorting an integer arrays
3333 */
3434int
35- int_cmp (const void * a , const void * b )
35+ int_cmp (const void * arg1 , const void * arg2 )
3636{
37- if (* (int * ) a < * (int * ) b )
37+ int v1 = * ((const int * ) arg1 );
38+ int v2 = * ((const int * ) arg2 );
39+
40+ if (v1 < v2 )
3841 return -1 ;
39- else if (* ( int * ) a > * ( int * ) b )
42+ else if (v1 > v2 )
4043 return 1 ;
4144 else
4245 return 0 ;
@@ -46,11 +49,14 @@ int_cmp(const void *a, const void *b)
4649 * Function for qsorting an double arrays
4750 */
4851int
49- double_cmp (const void * a , const void * b )
52+ double_cmp (const void * arg1 , const void * arg2 )
5053{
51- if (* (double * ) a < * (double * ) b )
54+ double v1 = * ((const double * ) arg1 );
55+ double v2 = * ((const double * ) arg2 );
56+
57+ if (v1 < v2 )
5258 return -1 ;
53- else if (* ( double * ) a > * ( double * ) b )
59+ else if (v1 > v2 )
5460 return 1 ;
5561 else
5662 return 0 ;
@@ -60,12 +66,14 @@ double_cmp(const void *a, const void *b)
6066 * Compares elements for two given indexes
6167 */
6268int
63- argsort_cmp (const void * a , const void * b )
69+ argsort_cmp (const void * arg1 , const void * arg2 )
6470{
65- return (* argsort_value_cmp ) ((char * ) argsort_a +
66- * ((int * ) a ) * argsort_es ,
67- (char * ) argsort_a +
68- * ((int * ) b ) * argsort_es );
71+ int idx1 = * ((const int * ) arg1 );
72+ int idx2 = * ((const int * ) arg2 );
73+ char * arr = (char * ) argsort_a ;
74+
75+ return (* argsort_value_cmp ) (& arr [idx1 * argsort_es ],
76+ & arr [idx2 * argsort_es ]);
6977}
7078
7179/*
0 commit comments