From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 7FAFC1395E2 for ; Tue, 15 Nov 2016 03:34:42 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id D7055E0A61; Tue, 15 Nov 2016 03:34:38 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 4ECC2E0A61 for ; Tue, 15 Nov 2016 03:34:38 +0000 (UTC) Received: from oystercatcher.gentoo.org (unknown [IPv6:2a01:4f8:202:4333:225:90ff:fed9:fc84]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id BF7BA341652 for ; Tue, 15 Nov 2016 03:34:36 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 33ED924C2 for ; Tue, 15 Nov 2016 03:34:35 +0000 (UTC) From: "Mike Frysinger" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Mike Frysinger" Message-ID: <1479180850.d97f4bbcd072d15d1754b27aa55a4999b831fe24.vapier@gentoo> Subject: [gentoo-commits] proj/portage-utils:master commit in: / X-VCS-Repository: proj/portage-utils X-VCS-Files: qmerge.c X-VCS-Directories: / X-VCS-Committer: vapier X-VCS-Committer-Name: Mike Frysinger X-VCS-Revision: d97f4bbcd072d15d1754b27aa55a4999b831fe24 X-VCS-Branch: master Date: Tue, 15 Nov 2016 03:34:35 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: 00fa6e91-c44a-492c-8b53-8d6d0205b00f X-Archives-Hash: 8837f5a34d5eb304fb90807f1601ffa3 commit: d97f4bbcd072d15d1754b27aa55a4999b831fe24 Author: Mike Frysinger gentoo org> AuthorDate: Tue Nov 15 03:34:10 2016 +0000 Commit: Mike Frysinger gentoo org> CommitDate: Tue Nov 15 03:34:10 2016 +0000 URL: https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=d97f4bbc qmerge: fix a few misc leaks qmerge.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/qmerge.c b/qmerge.c index 8a5d329..c7b928e 100644 --- a/qmerge.c +++ b/qmerge.c @@ -187,7 +187,7 @@ _q_static void qmerge_initialize(void) } char *buf; - xasprintf(&buf, "%s/portage", port_tmpdir); + xasprintf(&buf, "%s/portage/", port_tmpdir); mkdir_p(buf, 0755); xchdir(buf); @@ -195,13 +195,10 @@ _q_static void qmerge_initialize(void) if (force_download) unlink(Packages); - if (access(Packages, R_OK) != 0) { - xasprintf(&buf, "%s/portage/", port_tmpdir); - if (access(Packages, R_OK) != 0) - fetch(buf, Packages); - free(buf); - } + if (access(Packages, R_OK) != 0) + fetch(buf, Packages); } + free(buf); } struct qmerge_bv_state { @@ -871,12 +868,16 @@ pkg_merge(int level, const depend_atom *atom, const struct pkg_t *pkg) return; cat_ctx = q_vdb_open_cat(vdb_ctx, pkg->CATEGORY); if (!cat_ctx) { - if (errno != ENOENT) + if (errno != ENOENT) { + q_vdb_close(vdb_ctx); return; + } mkdirat(vdb_ctx->vdb_fd, pkg->CATEGORY, 0755); cat_ctx = q_vdb_open_cat(vdb_ctx, pkg->CATEGORY); - if (!cat_ctx) + if (!cat_ctx) { + q_vdb_close(vdb_ctx); return; + } } /* Set up our temp dir to unpack this stuff */ @@ -983,13 +984,15 @@ pkg_merge(int level, const depend_atom *atom, const struct pkg_t *pkg) warn("no idea how we reached here."); case ERROR: case NOT_EQUAL: - continue; + goto next_pkg; } qprintf("%s+++%s %s/%s %s %s/%s\n", GREEN, NORM, atom->CATEGORY, pkg->PF, booga[ret], cat_ctx->name, pkg_ctx->name); pkg_unmerge(pkg_ctx, objs); + next_pkg: + q_vdb_close_pkg(pkg_ctx); } /* Clean up the package state */ @@ -1020,6 +1023,8 @@ pkg_merge(int level, const depend_atom *atom, const struct pkg_t *pkg) rmdir("../qmerge"); printf("%s>>>%s %s%s%s/%s%s%s\n", YELLOW, NORM, WHITE, atom->CATEGORY, NORM, CYAN, atom->PN, NORM); + + q_vdb_close(vdb_ctx); } _q_static int @@ -1051,7 +1056,7 @@ pkg_unmerge(q_vdb_pkg_ctx *pkg_ctx, queue *keep) /* First get a handle on the things to clean up */ fp = q_vdb_pkg_fopenat_ro(pkg_ctx, "CONTENTS"); if (fp == NULL) - goto done; + return ret; portroot_fd = cat_ctx->ctx->portroot_fd; @@ -1199,7 +1204,6 @@ pkg_unmerge(q_vdb_pkg_ctx *pkg_ctx, queue *keep) } ret = 0; - done: free(phases); free(buf);