summaryrefslogtreecommitdiff
path: root/Src/Zle/zle_tricky.c
diff options
context:
space:
mode:
authorWayne Davison <wayned@users.sourceforge.net>2006-01-11 19:49:59 +0000
committerWayne Davison <wayned@users.sourceforge.net>2006-01-11 19:49:59 +0000
commitc6798bc1516dcd1f81b43ca010b448b65dc68228 (patch)
tree7bb34ef72059979148683cfac7cb74dccd4b8fc6 /Src/Zle/zle_tricky.c
parent4ffa433443f64bf9183d23dba82b122a2f7a3226 (diff)
downloadzsh-c6798bc1516dcd1f81b43ca010b448b65dc68228.tar.gz
zsh-c6798bc1516dcd1f81b43ca010b448b65dc68228.zip
The return value of mbrtowc() is a size_t (unsigned), so don't
assign it to an int and then check if it's >= 0, as that won't work on a system where an int is larger than a size_t.
Diffstat (limited to 'Src/Zle/zle_tricky.c')
-rw-r--r--Src/Zle/zle_tricky.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/Src/Zle/zle_tricky.c b/Src/Zle/zle_tricky.c
index ce5855b5c..d89c47b50 100644
--- a/Src/Zle/zle_tricky.c
+++ b/Src/Zle/zle_tricky.c
@@ -1912,10 +1912,11 @@ pfxlen(char *s, char *t)
#ifdef MULTIBYTE_SUPPORT
wchar_t wc;
mbstate_t ps;
- int ret, lasti = 0;
+ size_t cnt;
+ int lasti = 0;
char inc;
- memset(&ps, 0, sizeof(mbstate_t));
+ memset(&ps, 0, sizeof ps);
while (*s) {
if (*s == Meta) {
if (*t != Meta || t[1] != s[1])
@@ -1933,11 +1934,12 @@ pfxlen(char *s, char *t)
t++;
}
- ret = mbrtowc(&wc, &inc, 1, &ps);
- if (ret == -1) {
+ cnt = mbrtowc(&wc, &inc, 1, &ps);
+ if (cnt == (size_t)-1) {
/* error */
break;
- } else if (ret >= 0) {
+ }
+ if (cnt != (size_t)-2) {
/* successfully found complete character, record position */
lasti = i;
}