Index: src/chars.c =================================================================== --- src/chars.c (revision 5143) +++ src/chars.c (working copy) @@ -488,6 +488,20 @@ assert(buf != NULL && pos <= strlen(buf)); +#ifdef ENABLE_UTF8 + if (use_utf8) { + if (mblen(buf + pos - 1, MB_CUR_MAX) > 0) + return pos - 1; + if (mblen(buf + pos - 2, MB_CUR_MAX) > 0) + return pos - 2; + if (mblen(buf + pos - 3, MB_CUR_MAX) > 0) + return pos - 3; + if (mblen(buf + pos - 4, MB_CUR_MAX) > 0) + return pos - 4; + else + return pos - 1; + } +#endif /* There is no library function to move backward one multibyte * character. Here is the naive, O(pos) way to do it. */ while (before < pos) {