diff options
author | Dave Reisner <d@falconindy.com> | 2010-12-14 09:30:23 -0500 |
---|---|---|
committer | Dave Reisner <d@falconindy.com> | 2010-12-14 09:30:23 -0500 |
commit | 0c15e7ea631c7de22335a54f0f28390696670ba3 (patch) | |
tree | 64b859eddb29e925b1c425f9bd68e2ebd59cce67 | |
parent | 8e8bee99ca11fbe2dacbe67de1b6318c7b3c3e62 (diff) | |
download | expac-0c15e7ea631c7de22335a54f0f28390696670ba3.tar.xz |
Revert "fix memory leak in print_pkg"
This reverts commit 236ef35e1ce9eccfa47d37718b763decb7077136.
Causes memory corruption in some cases. We'd rather leak a little than
risk a segmentation fault. As expac is guaranteed to be a short lived
process, we'll opt for letting the kernel cleanup after us instead of
adding what appears to be a lot of extra logic.
-rw-r--r-- | expac.c | 35 |
1 files changed, 11 insertions, 24 deletions
@@ -346,7 +346,6 @@ static int print_time(time_t timestamp) { } static int print_pkg(pmpkg_t *pkg, const char *format) { - alpm_list_t *list = NULL; const char *f; char fmt[32]; int len, out = 0; @@ -414,50 +413,39 @@ static int print_pkg(pmpkg_t *pkg, const char *format) { /* lists */ case 'N': /* requiredby */ - list = alpm_pkg_compute_requiredby(pkg); - out += print_list(list, NULL, shortdeps); + out += print_list(alpm_pkg_compute_requiredby(pkg), NULL, shortdeps); break; case 'L': /* licenses */ - list = alpm_pkg_get_licenses(pkg); - out += print_list(list, NULL, shortdeps); + out += print_list(alpm_pkg_get_licenses(pkg), NULL, shortdeps); break; case 'G': /* groups */ - list = alpm_pkg_get_groups(pkg); - out += print_list(list, NULL, shortdeps); + out += print_list(alpm_pkg_get_groups(pkg), NULL, shortdeps); break; case 'E': /* depends (shortdeps) */ - list = alpm_pkg_get_depends(pkg); - out += print_list(list, (extractfn)alpm_dep_get_name, shortdeps); + out += print_list(alpm_pkg_get_depends(pkg), (extractfn)alpm_dep_get_name, shortdeps); break; case 'D': /* depends */ - list = alpm_pkg_get_depends(pkg); - out += print_list(list, (extractfn)alpm_dep_compute_string, shortdeps); + out += print_list(alpm_pkg_get_depends(pkg), (extractfn)alpm_dep_compute_string, shortdeps); break; case 'O': /* optdepends */ - list = alpm_pkg_get_optdepends(pkg); - out += print_list(list, NULL, shortdeps); + out += print_list(alpm_pkg_get_optdepends(pkg), NULL, shortdeps); break; case 'C': /* conflicts */ - list = alpm_pkg_get_conflicts(pkg); - out += print_list(list, NULL, shortdeps); + out += print_list(alpm_pkg_get_conflicts(pkg), NULL, shortdeps); break; case 'S': /* provides (shortdeps) */ shortdeps = true; case 'P': /* provides */ - list = alpm_pkg_get_provides(pkg); - out += print_list(list, NULL, shortdeps); + out += print_list(alpm_pkg_get_provides(pkg), NULL, shortdeps); break; case 'R': /* replaces */ - list = alpm_pkg_get_replaces(pkg); - out += print_list(list, NULL, shortdeps); + out += print_list(alpm_pkg_get_replaces(pkg), NULL, shortdeps); break; case 'F': /* files */ - list = alpm_pkg_get_files(pkg); - out += print_list(list, NULL, shortdeps); + out += print_list(alpm_pkg_get_files(pkg), NULL, shortdeps); break; case 'B': /* backup */ - list = alpm_pkg_get_backup(pkg); - out += print_list(list, NULL, shortdeps); + out += print_list(alpm_pkg_get_backup(pkg), NULL, shortdeps); break; case '%': putchar('%'); @@ -468,7 +456,6 @@ static int print_pkg(pmpkg_t *pkg, const char *format) { out++; break; } - FREELIST(list); } else if (*f == '\\') { char buf[3]; /* its not safe to do this in a single sprintf */ buf[0] = *f; |