From d22612899a74005fd442d54710c86e677742c7f4 Mon Sep 17 00:00:00 2001 From: Jari Vetoniemi Date: Sat, 12 Apr 2014 23:21:43 +0300 Subject: Curses really does not like tabs. --- lib/util.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'lib/util.c') diff --git a/lib/util.c b/lib/util.c index ca00514..fa85431 100644 --- a/lib/util.c +++ b/lib/util.c @@ -130,16 +130,26 @@ int _bmUtf8StringScreenWidth(const char *string) { assert(string); - int num_char = mbstowcs(NULL, string, 0) + 1; + char *mstr = _bmStrdup(string); + if (!mstr) + return strlen(string); + + char *s; + for (s = mstr; *s; ++s) if (*s == '\t') *s = ' '; + + int num_char = mbstowcs(NULL, mstr, 0) + 1; wchar_t *wstring = malloc((num_char + 1) * sizeof (wstring[0])); - if (mbstowcs(wstring, string, num_char) == (size_t)(-1)) { + if (mbstowcs(wstring, mstr, num_char) == (size_t)(-1)) { free(wstring); - return strlen(string); + int len = strlen(mstr); + free(mstr); + return len; } int length = wcswidth(wstring, num_char); free(wstring); + free(mstr); return length; } -- cgit v1.2.3-70-g09d2