diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/libalpm/diskspace.c | 12 | 
1 files changed, 7 insertions, 5 deletions
| diff --git a/lib/libalpm/diskspace.c b/lib/libalpm/diskspace.c index b53d272f..bc5f5127 100644 --- a/lib/libalpm/diskspace.c +++ b/lib/libalpm/diskspace.c @@ -246,7 +246,6 @@ int _alpm_check_diskspace(pmtrans_t *trans, pmdb_t *db_local)  	size_t replaces = 0, current = 0, numtargs;  	int abort = 0;  	alpm_list_t *targ; -	pmpkg_t *pkg;  	numtargs = alpm_list_count(trans->add);  	mount_points = mount_point_list(); @@ -259,24 +258,27 @@ int _alpm_check_diskspace(pmtrans_t *trans, pmdb_t *db_local)  	if(replaces) {  		numtargs += replaces;  		for(targ = trans->remove; targ; targ = targ->next, current++) { +			pmpkg_t *local_pkg;  			int percent = (current * 100) / numtargs;  			PROGRESS(trans, PM_TRANS_PROGRESS_DISKSPACE_START, "", percent,  					numtargs, current); -			pkg = targ->data; -			calculate_removed_size(mount_points, pkg); +			local_pkg = targ->data; +			calculate_removed_size(mount_points, local_pkg);  		}  	}  	for(targ = trans->add; targ; targ = targ->next, current++) { +		pmpkg_t *pkg, *local_pkg;  		int percent = (current * 100) / numtargs;  		PROGRESS(trans, PM_TRANS_PROGRESS_DISKSPACE_START, "", percent,  				numtargs, current);  		pkg = targ->data;  		/* is this package already installed? */ -		if(_alpm_db_get_pkgfromcache(db_local, pkg->name)) { -			calculate_removed_size(mount_points, pkg); +		local_pkg = _alpm_db_get_pkgfromcache(db_local, pkg->name); +		if(local_pkg) { +			calculate_removed_size(mount_points, local_pkg);  		}  		calculate_installed_size(mount_points, pkg); | 
