Browse Source

Avoid unneeded memory allocation in xdirname()

master
sin 9 years ago
parent
commit
fa6b45a96d
1 changed files with 4 additions and 8 deletions
  1. +4
    -8
      noice.c

+ 4
- 8
noice.c View File

@@ -158,21 +158,17 @@ xstrdup(const char *s)
char * char *
xdirname(const char *path) xdirname(const char *path)
{ {
char *p, *tmp;
char tmp[PATH_MAX], *p;


/* Some implementations of dirname(3) may modify `path' and some /* Some implementations of dirname(3) may modify `path' and some
* return a pointer inside `path' and we cannot free(3) the * return a pointer inside `path' and we cannot free(3) the
* original string if we lose track of it. */ * original string if we lose track of it. */
tmp = xstrdup(path);
strlcpy(tmp, path, sizeof(tmp));
p = dirname(tmp); p = dirname(tmp);
if (p == NULL) {
free(tmp);
if (p == NULL)
printerr(1, "dirname"); printerr(1, "dirname");
}
/* Make sure this is a malloc(3)-ed string */ /* Make sure this is a malloc(3)-ed string */
p = xstrdup(p);
free(tmp);
return p;
return xstrdup(p);
} }


void void


Loading…
Cancel
Save