]> Sergey Matveev's repositories - nnn.git/commitdiff
Fix regression
authorArun Prakash Jana <engineerarun@gmail.com>
Sat, 9 Mar 2019 12:48:32 +0000 (18:18 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Sat, 9 Mar 2019 12:48:32 +0000 (18:18 +0530)
src/nnn.c

index 017b04c194041cdf44123a07b4e66425e3686974..5392a7fd7d38feee81597e1335e7e616d61b09b6 100644 (file)
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -1944,19 +1944,25 @@ static inline void resetdircolor(int flags)
 static char *unescape(const char *str, uint maxcols)
 {
        static wchar_t wbuf[NAME_MAX + 1] __attribute__ ((aligned));
-       static wchar_t *buf = wbuf;
-       static size_t len, lencount;
+       wchar_t *buf = wbuf;
+       size_t len, lencount = 0;
 
        /* Convert multi-byte to wide char */
        len = mbstowcs(wbuf, str, NAME_MAX);
 
-       //g_buf[0] = '\0';
+       while (*buf && lencount <= maxcols) {
+               if (*buf <= '\x1f' || *buf == '\x7f')
+                       *buf = '\?';
+
+               ++buf;
+               ++lencount;
+       }
+
+       len = lencount = wcswidth(wbuf, len);
 
-       if (maxcols) {
-               len = lencount = wcswidth(wbuf, len);
-               /* Reduce number of wide chars to max columns */
-               if (len > maxcols)
-                       lencount = maxcols + 1;
+       /* Reduce number of wide chars to max columns */
+       if (len > maxcols) {
+               lencount = maxcols + 1;
 
                /* Reduce wide chars one by one till it fits */
                while (len > maxcols)
@@ -1965,13 +1971,6 @@ static char *unescape(const char *str, uint maxcols)
                wbuf[lencount] = L'\0';
        }
 
-       while (*buf) {
-               if (*buf <= '\x1f' || *buf == '\x7f')
-                       *buf = '\?';
-
-               ++buf;
-       }
-
        /* Convert wide char to multi-byte */
        wcstombs(g_buf, wbuf, NAME_MAX);
        return g_buf;