diff --git a/src/stralloc.c b/src/stralloc.c index 8c87c5a08ea15a2744a34e4bf2ae0a2e64d65076..99de0b41947a9a44be336b757fa30f8a1abd305f 100644 --- a/src/stralloc.c +++ b/src/stralloc.c @@ -1511,38 +1511,24 @@ int low_quick_binary_strcmp(const char *a, ptrdiff_t alen, /* does not take locale into account */ ptrdiff_t generic_quick_binary_strcmp(const char *a, - ptrdiff_t alen, int asize, - const char *b, - ptrdiff_t blen, int bsize) + ptrdiff_t alen, int asize, + const char *b, + ptrdiff_t blen, int bsize) { if(!asize && !bsize) + return low_quick_binary_strcmp(a, alen, b, blen); + + ptrdiff_t pos; + for(pos=0;pos< MINIMUM(alen,blen) ;pos++) { - int tmp; - if(alen > blen) - { - tmp=memcmp(a, b, blen); - if(tmp) return tmp; + p_wchar2 ac=generic_extract(a,asize,pos); + p_wchar2 bc=generic_extract(b,bsize,pos); + if(ac != bc) { + if (ac < bc) return -1; return 1; - }else if(alen < blen){ - tmp=memcmp(a, b, alen); - if(tmp) return tmp; - return -1; - }else{ - return memcmp(a, b, alen); - } - }else{ - ptrdiff_t pos; - for(pos=0;pos< MINIMUM(alen,blen) ;pos++) - { - p_wchar2 ac=generic_extract(a,asize,pos); - p_wchar2 bc=generic_extract(b,bsize,pos); - if(ac != bc) { - if (ac < bc) return -1; - return 1; - } } - return alen-blen; } + return alen-blen; } /* Does not take locale into account