nano

nano with my custom patches
git clone git://bsandro.tech/nano
Log | Files | Refs | README | LICENSE

commit 65658ef574672491e2ec0e3020cb66d87fcc1a03
parent 18d616f253810303b588b67abea9bdcd18992673
Author: David Lawrence Ramsey <pooka109@gmail.com>
Date:   Sun, 16 Jan 2005 20:05:36 +0000

make sure the multibyte string operations operate using multibyte
character counts instead of byte character counts


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2280 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

Diffstat:
Msrc/chars.c | 10+++++-----
Msrc/search.c | 2+-
2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/chars.c b/src/chars.c @@ -552,12 +552,12 @@ int mbstrncasecmp(const char *s1, const char *s2, size_t n) ws2 = (unsigned char)*s2_mb; } - if (s1_mb_len > n || towlower(ws1) != towlower(ws2)) + if (n == 0 || towlower(ws1) != towlower(ws2)) break; s1 += s1_mb_len; s2 += s2_mb_len; - n -= s1_mb_len; + n--; } free(s1_mb); @@ -648,16 +648,16 @@ size_t mbstrnlen(const char *s, size_t maxlen) #endif , NULL); - if (s_mb_len > maxlen) + if (maxlen == 0) break; - maxlen -= s_mb_len; + maxlen--; n += s_mb_len; } free(s_mb); - return n; + return strnlenpt(s, n); } else #endif return diff --git a/src/search.c b/src/search.c @@ -84,7 +84,7 @@ void not_found_msg(const char *str) assert(str != NULL); disp = display_string(str, 0, (COLS / 2) + 1, FALSE); - numchars = mbstrnlen(disp, actual_x(disp, COLS / 2)); + numchars = actual_x(disp, mbstrnlen(disp, COLS / 2)); statusbar(_("\"%.*s%s\" not found"), numchars, disp, (disp[numchars] == '\0') ? "" : "...");