*/
/* Lexicographic Compare */
-static APR_INLINE int compare_lexicography(char *cpNum1, char *cpNum2)
+static APR_INLINE int compare_lexicography(char *a, char *b)
{
- int i;
- int n1, n2;
+ apr_size_t i, lena, lenb;
- n1 = strlen(cpNum1);
- n2 = strlen(cpNum2);
- if (n1 > n2) {
- return 1;
- }
- if (n1 < n2) {
- return -1;
- }
- for (i = 0; i < n1; i++) {
- if (cpNum1[i] > cpNum2[i]) {
- return 1;
- }
- if (cpNum1[i] < cpNum2[i]) {
- return -1;
+ lena = strlen(a);
+ lenb = strlen(b);
+
+ if (lena == lenb) {
+ for (i = 0; i < lena; ++i) {
+ if (a[i] != b[i]) {
+ return ((unsigned char)a[i] > (unsigned char)b[i]) ? 1 : -1;
+ }
}
+
+ return 0;
}
- return 0;
+
+ return ((lena > lenb) ? 1 : -1);
}
/*