Avoid unneeded memory allocation in xdirname() - noice - small file browser (mirror / fork from 2f30.org)
 (HTM) git clone git://git.codemadness.org/noice
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit fa6b45a96de53621d4e89bd63ee810210712f043
 (DIR) parent e27af6f1dbc804e90a3b98f19afdf1055bab8dc9
 (HTM) Author: sin <sin@2f30.org>
       Date:   Wed,  6 Jan 2016 15:53:04 +0000
       
       Avoid unneeded memory allocation in xdirname()
       
       Diffstat:
         M noice.c                             |      12 ++++--------
       
       1 file changed, 4 insertions(+), 8 deletions(-)
       ---
 (DIR) diff --git a/noice.c b/noice.c
       @@ -158,21 +158,17 @@ xstrdup(const char *s)
        char *
        xdirname(const char *path)
        {
       -        char *p, *tmp;
       +        char tmp[PATH_MAX], *p;
        
                /* Some implementations of dirname(3) may modify `path' and some
                 * return a pointer inside `path' and we cannot free(3) the
                 * original string if we lose track of it. */
       -        tmp = xstrdup(path);
       +        strlcpy(tmp, path, sizeof(tmp));
                p = dirname(tmp);
       -        if (p == NULL) {
       -                free(tmp);
       +        if (p == NULL)
                        printerr(1, "dirname");
       -        }
                /* Make sure this is a malloc(3)-ed string */
       -        p = xstrdup(p);
       -        free(tmp);
       -        return p;
       +        return xstrdup(p);
        }
        
        void