aboutsummaryrefslogtreecommitdiffstats
path: root/src/cache.c
diff options
context:
space:
mode:
authorTimo Teras <timo.teras@iki.fi>2009-08-04 13:57:54 +0300
committerTimo Teras <timo.teras@iki.fi>2009-08-04 13:57:54 +0300
commitec2ade154289ce587eab3375445a33cad992c234 (patch)
tree11d7c8731afa608719330ce3d63f719b250d4171 /src/cache.c
parent8c19869c2910332913b5a4f341dbe612c691782e (diff)
downloadapk-tools-ec2ade154289ce587eab3375445a33cad992c234.tar.gz
apk-tools-ec2ade154289ce587eab3375445a33cad992c234.tar.bz2
apk-tools-ec2ade154289ce587eab3375445a33cad992c234.tar.xz
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.c8
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;
}