diff options
author | Jim Meyering <meyering@redhat.com> | 2008-10-18 22:01:36 +0200 |
---|---|---|
committer | Jim Meyering <meyering@redhat.com> | 2008-10-26 21:43:11 +0100 |
commit | fd1c0898aaa116401a705ca89005904a30006201 (patch) | |
tree | 6f09b94c70d9bcb348787b3e0b41e6c8855f074f /libidu/walker.c | |
parent | f915d6db854f10a2acc902aa2755974ba115a603 (diff) | |
download | idutils-fd1c0898aaa116401a705ca89005904a30006201.tar.gz idutils-fd1c0898aaa116401a705ca89005904a30006201.tar.bz2 idutils-fd1c0898aaa116401a705ca89005904a30006201.zip |
avoid a start-up leak
* libidu/walker.c (get_current_dir_link): Don't leak cwd_0.
Diffstat (limited to 'libidu/walker.c')
-rw-r--r-- | libidu/walker.c | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/libidu/walker.c b/libidu/walker.c index 8064282..8a27fec 100644 --- a/libidu/walker.c +++ b/libidu/walker.c @@ -611,23 +611,17 @@ struct file_link * get_current_dir_link (void) { struct file_link *dir_link; - char *cwd_0; char *cwd; - char *xcwd = 0; char **links_0; char **links; if (current_dir_link) return current_dir_link; - cwd_0 = getenv ("PWD"); - if (cwd_0) - cwd_0 = xstrdup (cwd_0); - if (!same_as_dot (cwd_0)) - cwd_0 = xcwd = xgetcwd (); - if (cwd_0 == 0) + cwd = getenv ("PWD"); + cwd = same_as_dot (cwd) ? xstrdup (cwd) : xgetcwd (); + if (cwd == NULL) error (1, errno, _("can't get working directory")); - cwd = cwd_0; #if HAVE_LINK dir_link = get_link_from_string (SLASH_STRING, 0); dir_link->fl_flags = (dir_link->fl_flags & ~FL_TYPE_MASK) | FL_TYPE_DIR; @@ -645,7 +639,7 @@ get_current_dir_link (void) } chdir_to_link (dir_link); free (links_0); - free (xcwd); + free (cwd); current_dir_link = dir_link; return dir_link; } |