diff options
author | Timo Teras <timo.teras@iki.fi> | 2009-08-04 13:57:54 +0300 |
---|---|---|
committer | Timo Teras <timo.teras@iki.fi> | 2009-08-04 13:57:54 +0300 |
commit | ec2ade154289ce587eab3375445a33cad992c234 (patch) | |
tree | 11d7c8731afa608719330ce3d63f719b250d4171 /src/cache.c | |
parent | 8c19869c2910332913b5a4f341dbe612c691782e (diff) | |
download | apk-tools-ec2ade154289ce587eab3375445a33cad992c234.tar.gz apk-tools-ec2ade154289ce587eab3375445a33cad992c234.tar.bz2 apk-tools-ec2ade154289ce587eab3375445a33cad992c234.tar.xz apk-tools-ec2ade154289ce587eab3375445a33cad992c234.zip |
state: fix world dependencies to be honored always
previously they might have been skipped on certain situations.
this also fixes some other reverse dependency enforcements and
implements new "pending" state for locked name.
Diffstat (limited to 'src/cache.c')
-rw-r--r-- | src/cache.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/cache.c b/src/cache.c index c961fc9..641cecd 100644 --- a/src/cache.c +++ b/src/cache.c @@ -29,12 +29,15 @@ static int cache_download(struct apk_database *db) struct apk_change *change; struct apk_package *pkg; char item[PATH_MAX], cacheitem[PATH_MAX]; - int i, r; + int i, r = 0; if (db->world == NULL) return 0; state = apk_state_new(db); + if (state == NULL) + goto err; + for (i = 0; i < db->world->num; i++) { r = apk_state_lock_dependency(state, &db->world->item[i]); if (r != 0) { @@ -65,7 +68,8 @@ static int cache_download(struct apk_database *db) } err: - apk_state_unref(state); + if (state != NULL) + apk_state_unref(state); return r; } |