diff --git a/libraries/liblunicode/ucstr.c b/libraries/liblunicode/ucstr.c index 43ab99ddf7..8ec9d2668f 100644 --- a/libraries/liblunicode/ucstr.c +++ b/libraries/liblunicode/ucstr.c @@ -4,6 +4,12 @@ #include #include +#include + +#define malloc(x) ber_memalloc(x) +#define realloc(x,y) ber_memrealloc(x,y) +#define free(x) ber_memfree(x) + #include #include @@ -99,18 +105,35 @@ char * UTF8normalize( s = bv->bv_val; len = bv->bv_len; - if ( len == 0 ) { - out = (char *) malloc( 1 ); - *out = '\0'; + /* See if the string is pure ASCII so we can shortcut */ + for ( i=0; ibv_val, len ); + } else { + for ( j=0; j 0 ? 1 : -1; } + /* See if we can get away with a straight ASCII compare */ + len = (l1 < l2) ? l1 : l2; + for ( i = 0; i l2 ? l1 : l2 ) * sizeof(*ucs) ); if ( ucs == NULL ) { return l1 > l2 ? 1 : -1; /* what to do??? */