diff options
Diffstat (limited to 'lib/libalpm/sync.c')
-rw-r--r-- | lib/libalpm/sync.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c index 2a56115b..147a8377 100644 --- a/lib/libalpm/sync.c +++ b/lib/libalpm/sync.c @@ -209,24 +209,26 @@ int SYMEXPORT alpm_sync_sysupgrade(alpm_handle_t *handle, int enable_downgrade) continue; } - /* Search for literal then replacers in each sync database. */ + /* Search for replacers then literal (if no replacer) in each sync database. */ for(j = handle->dbs_sync; j; j = j->next) { alpm_db_t *sdb = j->data; /* Check sdb */ - alpm_pkg_t *spkg = _alpm_db_get_pkgfromcache(sdb, lpkg->name); - int literal_upgrade = 0; - if(spkg) { - literal_upgrade = check_literal(handle, lpkg, spkg, enable_downgrade); - if(literal_upgrade) { - trans->add = alpm_list_add(trans->add, spkg); - } + alpm_list_t *replacers; + replacers = check_replacers(handle, lpkg, sdb); + if(replacers) { + trans->add = alpm_list_join(trans->add, replacers); /* jump to next local package */ break; } else { - alpm_list_t *replacers; - replacers = check_replacers(handle, lpkg, sdb); - if(replacers) { - trans->add = alpm_list_join(trans->add, replacers); + alpm_pkg_t *spkg = _alpm_db_get_pkgfromcache(sdb, lpkg->name); + if(spkg) { + int literal_upgrade = 0; + literal_upgrade = check_literal(handle, lpkg, spkg, enable_downgrade); + if(literal_upgrade) { + trans->add = alpm_list_add(trans->add, spkg); + } + /* jump to next local package */ + break; } } } |