From ab549c846707230e44e2b7e08c6a04d44af916cd Mon Sep 17 00:00:00 2001 From: morganamilo Date: Sat, 16 Jan 2021 17:12:55 +0000 Subject: libalpm: fix total download reporting wrong total When a package does not need to be downloaded but a signature does, total download didn't count that towards the total. Signed-off-by: Allan McRae --- lib/libalpm/sync.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) (limited to 'lib') diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c index 2859debb..c742e395 100644 --- a/lib/libalpm/sync.c +++ b/lib/libalpm/sync.c @@ -755,6 +755,11 @@ static int download_files(alpm_handle_t *handle) cachedir = _alpm_filecache_setup(handle); handle->trans->state = STATE_DOWNLOADING; + ret = find_dl_candidates(handle, &files); + if(ret != 0) { + goto finish; + } + /* Total progress - figure out the total download size if required to * pass to the callback. This function is called once, and it is up to the * frontend to compute incremental progress. */ @@ -762,21 +767,14 @@ static int download_files(alpm_handle_t *handle) off_t total_size = (off_t)0; size_t howmany = 0; /* sum up the download size for each package and store total */ - for(i = handle->trans->add; i; i = i->next) { + for(i = files; i; i = i->next) { alpm_pkg_t *spkg = i->data; total_size += spkg->download_size; - if(spkg->download_size > 0) { - howmany++; - } + howmany++; } handle->totaldlcb(howmany, total_size); } - ret = find_dl_candidates(handle, &files); - if(ret != 0) { - goto finish; - } - if(files) { /* check for necessary disk space for download */ if(handle->checkspace) { -- cgit v1.2.3-54-g00ecf