diff options
Diffstat (limited to 'src/charset.c')
-rw-r--r-- | src/charset.c | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/src/charset.c b/src/charset.c index 65f3621ee8..e85f369c61 100644 --- a/src/charset.c +++ b/src/charset.c @@ -330,7 +330,7 @@ void trans_characters(char_u *buf, int bufsize) /// /// @param s /// -/// @return translated string or NULL if out of memory. +/// @return translated string char_u *transstr(char_u *s) { char_u *res; @@ -371,26 +371,25 @@ char_u *transstr(char_u *s) res = alloc((unsigned)(vim_strsize(s) + 1)); } - if (res != NULL) { - *res = NUL; - p = s; + *res = NUL; + p = s; - while (*p != NUL) { - if (has_mbyte && ((l = (*mb_ptr2len)(p)) > 1)) { - c = (*mb_ptr2char)(p); + while (*p != NUL) { + if (has_mbyte && ((l = (*mb_ptr2len)(p)) > 1)) { + c = (*mb_ptr2char)(p); - if (vim_isprintc(c)) { - // append printable multi-byte char - STRNCAT(res, p, l); - } else { - transchar_hex(res + STRLEN(res), c); - } - p += l; + if (vim_isprintc(c)) { + // append printable multi-byte char + STRNCAT(res, p, l); } else { - STRCAT(res, transchar_byte(*p++)); + transchar_hex(res + STRLEN(res), c); } + p += l; + } else { + STRCAT(res, transchar_byte(*p++)); } } + return res; } |