summaryrefslogtreecommitdiff
path: root/lib/libalpm
diff options
context:
space:
mode:
authorAndrew Gregory <andrew.gregory.8@gmail.com>2018-11-16 19:47:30 -0800
committerAllan McRae <allan@archlinux.org>2018-12-10 11:12:06 +1000
commitf28ddd9d93ba5e16848cc2ed85a38cec4d2f2b65 (patch)
treebd45b81e79647c5a9510571e27b1b5d915ef43ae /lib/libalpm
parent9f1b735d76d04665d6324e723e163a52ca27567c (diff)
downloadpacman-f28ddd9d93ba5e16848cc2ed85a38cec4d2f2b65.tar.xz
check localdb before upgrading package
Commit 2ee7a8d89ad693617307260604e1d58757fd2978 replaced a manual check for a local package with a check for the "oldpkg" member, which gets set at the beginning of the transaction. If the package was also in the remove list, such as when a package gets replaced, it would no longer be in the local db and pacman would try to remove it twice, resulting in superfluous error messages. Fixes: FS#50875, FS#55534 Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com> Signed-off-by: Allan McRae <allan@archlinux.org>
Diffstat (limited to 'lib/libalpm')
-rw-r--r--lib/libalpm/add.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/libalpm/add.c b/lib/libalpm/add.c
index 5a3e06b8..e415bb17 100644
--- a/lib/libalpm/add.c
+++ b/lib/libalpm/add.c
@@ -427,7 +427,7 @@ static int commit_single_pkg(alpm_handle_t *handle, alpm_pkg_t *newpkg,
ASSERT(trans != NULL, return -1);
/* see if this is an upgrade. if so, remove the old package first */
- if((oldpkg = newpkg->oldpkg)) {
+ if(_alpm_db_get_pkgfromcache(db, newpkg->name) && (oldpkg = newpkg->oldpkg)) {
int cmp = _alpm_pkg_compare_versions(newpkg, oldpkg);
if(cmp < 0) {
log_msg = "downgrading";