Fix progress bar overflow while checking package integrity

On 32bit systems, the progress bar intergrity checking can show values
greater than 100% with large transactions.  This is due to the total
size of all package files being greater than a size_t.  Use uint64_t
for these sizes.

Fixes FS#36608

Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
Allan McRae 2013-10-14 14:55:20 +10:00
parent 3e903d34cc
commit dcfc247a2c

View file

@ -1054,7 +1054,7 @@ static int check_keyring(alpm_handle_t *handle)
#endif /* HAVE_LIBGPGME */ #endif /* HAVE_LIBGPGME */
static int check_validity(alpm_handle_t *handle, static int check_validity(alpm_handle_t *handle,
size_t total, size_t total_bytes) size_t total, uint64_t total_bytes)
{ {
struct validity { struct validity {
alpm_pkg_t *pkg; alpm_pkg_t *pkg;
@ -1064,7 +1064,8 @@ static int check_validity(alpm_handle_t *handle,
alpm_pkgvalidation_t validation; alpm_pkgvalidation_t validation;
alpm_errno_t error; alpm_errno_t error;
}; };
size_t current = 0, current_bytes = 0; size_t current = 0;
uint64_t current_bytes = 0;
alpm_list_t *i, *errors = NULL; alpm_list_t *i, *errors = NULL;
/* Check integrity of packages */ /* Check integrity of packages */
@ -1197,7 +1198,8 @@ static int load_packages(alpm_handle_t *handle, alpm_list_t **data,
int _alpm_sync_commit(alpm_handle_t *handle, alpm_list_t **data) int _alpm_sync_commit(alpm_handle_t *handle, alpm_list_t **data)
{ {
alpm_list_t *i, *deltas = NULL; alpm_list_t *i, *deltas = NULL;
size_t total = 0, total_bytes = 0; size_t total = 0;
uint64_t total_bytes = 0;
alpm_trans_t *trans = handle->trans; alpm_trans_t *trans = handle->trans;
if(download_files(handle, &deltas)) { if(download_files(handle, &deltas)) {