From 97672bd79f8e9e0810e2eda250c9b9059e4c14f3 Mon Sep 17 00:00:00 2001 From: Juan RP Date: Sat, 22 Jun 2019 18:47:13 +0200 Subject: [PATCH] pkgdb: fix two issues in _update() and _release(). xbps_pkgdb_update: inverted condition that made it 'flush' when !flush. xbps_pkgdb_release: xhp->pkgdb might be NULL, but unlock pkgdb anyway. --- lib/pkgdb.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/pkgdb.c b/lib/pkgdb.c index b9e6e27d..3264a0f0 100644 --- a/lib/pkgdb.c +++ b/lib/pkgdb.c @@ -125,6 +125,8 @@ ret: void xbps_pkgdb_unlock(struct xbps_handle *xhp) { + xbps_dbg_printf(xhp, "%s: pkgdb_fd %d\n", __func__, pkgdb_fd); + if (pkgdb_fd != -1) { if (lockf(pkgdb_fd, F_ULOCK, 0) == -1) xbps_dbg_printf(xhp, "[pkgdb] failed to unlock pkgdb: %s\n", strerror(errno)); @@ -234,7 +236,7 @@ xbps_pkgdb_update(struct xbps_handle *xhp, bool flush, bool update) if (cached_rv && !flush) return cached_rv; - if (xhp->pkgdb && update) { + if (xhp->pkgdb && flush) { pkgdb_storage = xbps_dictionary_internalize_from_file(xhp->pkgdb_plist); if (pkgdb_storage == NULL || !xbps_dictionary_equals(xhp->pkgdb, pkgdb_storage)) { @@ -276,13 +278,11 @@ xbps_pkgdb_update(struct xbps_handle *xhp, bool flush, bool update) void HIDDEN xbps_pkgdb_release(struct xbps_handle *xhp) { - assert(xhp != NULL); - - if (xhp->pkgdb == NULL) - return; + assert(xhp); xbps_pkgdb_unlock(xhp); - xbps_object_release(xhp->pkgdb); + if (xhp->pkgdb) + xbps_object_release(xhp->pkgdb); xbps_dbg_printf(xhp, "[pkgdb] released ok.\n"); }