]> Sergey Matveev's repositories - nnn.git/commitdiff
Fix warning on CentOS 6 (refer to #282)
authorArun Prakash Jana <engineerarun@gmail.com>
Thu, 13 Jun 2019 00:37:53 +0000 (06:07 +0530)
committerArun Prakash Jana <engineerarun@gmail.com>
Thu, 13 Jun 2019 00:51:10 +0000 (06:21 +0530)
src/nnn.c

index 09826f7ec1273c948b5b0f4ccb091ac2f596353b..db57b618b3c540ba2d986b65c7317ba5dbe2fe7f 100644 (file)
--- a/src/nnn.c
+++ b/src/nnn.c
@@ -1756,14 +1756,17 @@ static char *xreadline(char *prefill, char *prompt)
        size_t len, pos;
        int x, y, r;
        wint_t ch[2] = {0};
-       wchar_t * const buf = (wchar_t *)g_buf;
+       wchar_t * const buf = malloc(sizeof(wchar_t) * CMD_LEN_MAX);
+
+       if (!buf)
+               errexit();
 
        cleartimeout();
        printprompt(prompt);
 
        if (prefill) {
                DPRINTF_S(prefill);
-               len = pos = mbstowcs(buf, prefill, NAME_MAX);
+               len = pos = mbstowcs(buf, prefill, CMD_LEN_MAX);
        } else
                len = (size_t)-1;
 
@@ -1821,7 +1824,7 @@ static char *xreadline(char *prefill, char *prompt)
                                if (*ch < ASCII_MAX && keyname(*ch)[0] == '^')
                                        continue;
 
-                               if (pos < NAME_MAX - 1) {
+                               if (pos < CMD_LEN_MAX - 1) {
                                        memmove(buf + pos + 1, buf + pos, (len - pos) << 2);
                                        buf[pos] = *ch;
                                        ++len, ++pos;
@@ -1869,8 +1872,9 @@ END:
        clearprompt();
 
        buf[len] = '\0';
-       wcstombs(g_buf + ((NAME_MAX + 1) << 2), buf, NAME_MAX);
-       return g_buf + ((NAME_MAX + 1) << 2);
+       wcstombs(g_buf, buf, ++len);
+       free(buf);
+       return g_buf;
 }
 
 #ifndef NORL