From c6798bc1516dcd1f81b43ca010b448b65dc68228 Mon Sep 17 00:00:00 2001 From: Wayne Davison Date: Wed, 11 Jan 2006 19:49:59 +0000 Subject: 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. --- Src/Zle/zle_tricky.c | 12 +++++++----- 1 file 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; } -- cgit 1.4.1