aboutsummaryrefslogtreecommitdiff
path: root/src/charset.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/charset.c')
-rw-r--r--src/charset.c29
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;
}