Author: iratqq
Date: Sun Jul 12 21:20:06 2009
New Revision: 5977
Modified:
trunk/uim/bsdlook.c
Log:
* uim/bsdlook.c (compare):
- Check input string as unsigned characters for multibyte charset.
Modified: trunk/uim/bsdlook.c
==============================================================================
--- trunk/uim/bsdlook.c (original)
+++ trunk/uim/bsdlook.c Sun Jul 12 21:20:06 2009
@@ -434,11 +434,11 @@
compare(char *s1, char *s2, uim_look_ctx *ctx)
{
int ch;
- char *back = ctx->back;
+ unsigned char *back = (unsigned char *)ctx->back;
int fflag = ctx->fflag, dflag = ctx->dflag;
- for (; *s1 && s2 < back && *s2 != '\n'; ++s1, ++s2) {
- ch = *s2;
+ for (; (unsigned char)*s1 && (unsigned char *)s2 < back && *s2 != '\n';
++s1, ++s2) {
+ ch = (unsigned char)*s2;
if (fflag)
ch = FOLD(ch);
if (dflag)
@@ -448,10 +448,10 @@
++s2; /* Ignore character in comparison. */
continue;
}
- if (*s1 != ch)
- return (*s1 < ch ? LESS : GREATER);
+ if ((unsigned char)*s1 != ch)
+ return ((unsigned char)*s1 < ch ? LESS : GREATER);
}
- return (*s1 ? GREATER : EQUAL);
+ return ((unsigned char)*s1 ? GREATER : EQUAL);
}
#if 0