@@ -32,11 +32,14 @@ static int argsort_cmp(const void *a, const void *b);
32
32
* Function for qsorting an integer arrays
33
33
*/
34
34
int
35
- int_cmp (const void * a , const void * b )
35
+ int_cmp (const void * arg1 , const void * arg2 )
36
36
{
37
- if (* (int * ) a < * (int * ) b )
37
+ int v1 = * ((const int * ) arg1 );
38
+ int v2 = * ((const int * ) arg2 );
39
+
40
+ if (v1 < v2 )
38
41
return -1 ;
39
- else if (* ( int * ) a > * ( int * ) b )
42
+ else if (v1 > v2 )
40
43
return 1 ;
41
44
else
42
45
return 0 ;
@@ -46,11 +49,14 @@ int_cmp(const void *a, const void *b)
46
49
* Function for qsorting an double arrays
47
50
*/
48
51
int
49
- double_cmp (const void * a , const void * b )
52
+ double_cmp (const void * arg1 , const void * arg2 )
50
53
{
51
- if (* (double * ) a < * (double * ) b )
54
+ double v1 = * ((const double * ) arg1 );
55
+ double v2 = * ((const double * ) arg2 );
56
+
57
+ if (v1 < v2 )
52
58
return -1 ;
53
- else if (* ( double * ) a > * ( double * ) b )
59
+ else if (v1 > v2 )
54
60
return 1 ;
55
61
else
56
62
return 0 ;
@@ -60,12 +66,14 @@ double_cmp(const void *a, const void *b)
60
66
* Compares elements for two given indexes
61
67
*/
62
68
int
63
- argsort_cmp (const void * a , const void * b )
69
+ argsort_cmp (const void * arg1 , const void * arg2 )
64
70
{
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 ]);
69
77
}
70
78
71
79
/*
0 commit comments