diff options
author | Timo Teras <timo.teras@iki.fi> | 2009-01-17 09:28:02 +0200 |
---|---|---|
committer | Timo Teras <timo.teras@iki.fi> | 2009-01-17 09:33:02 +0200 |
commit | 1a9cc552a536e15083e5eceaad39f0f8019392c5 (patch) | |
tree | 4fb6f01eb7e367f21feba3e58dc9eb7543dc6ad2 /src | |
parent | 298b5994cee7eb80edabf40b6adeffed1d94722e (diff) | |
download | apk-tools-1a9cc552a536e15083e5eceaad39f0f8019392c5.tar.gz apk-tools-1a9cc552a536e15083e5eceaad39f0f8019392c5.tar.bz2 apk-tools-1a9cc552a536e15083e5eceaad39f0f8019392c5.tar.xz apk-tools-1a9cc552a536e15083e5eceaad39f0f8019392c5.zip |
del: proper ordering of file db entry deletion
Diffstat (limited to 'src')
-rw-r--r-- | src/database.c | 4 | ||||
-rw-r--r-- | src/hash.c | 5 |
2 files changed, 3 insertions, 6 deletions
diff --git a/src/database.c b/src/database.c index a84f2e6..190b264 100644 --- a/src/database.c +++ b/src/database.c @@ -1051,8 +1051,6 @@ static void apk_db_purge_pkg(struct apk_database *db, diri->dir->dirname, file->filename); - file->diri = NULL; - key = (struct apk_db_file_hash_key) { .dirname = APK_BLOB_STR(diri->dir->dirname), .filename = APK_BLOB_STR(file->filename), @@ -1061,7 +1059,7 @@ static void apk_db_purge_pkg(struct apk_database *db, APK_BLOB_BUF(&key)); unlink(name); __hlist_del(fc, &diri->owned_files.first); - + file->diri = NULL; db->installed.stats.files--; } apk_db_diri_rmdir(diri); @@ -100,9 +100,8 @@ void apk_hash_delete(struct apk_hash *h, apk_blob_t key) if (h->ops->compare_item(item, key) == 0) { hlist_del(pos, &h->buckets->item[hash]); h->ops->delete_item(item); - return; + break; } - } } else { hlist_for_each(pos, &h->buckets->item[hash]) { @@ -111,7 +110,7 @@ void apk_hash_delete(struct apk_hash *h, apk_blob_t key) if (h->ops->compare(key, itemkey) == 0) { hlist_del(pos, &h->buckets->item[hash]); h->ops->delete_item(item); - return; + break; } } } |