del: proper ordering of file db entry deletion

cute-signatures
Timo Teras 2009-01-17 09:28:02 +02:00
parent 298b5994ce
commit 1a9cc552a5
2 changed files with 3 additions and 6 deletions

View File

@ -1051,8 +1051,6 @@ static void apk_db_purge_pkg(struct apk_database *db,
diri->dir->dirname, diri->dir->dirname,
file->filename); file->filename);
file->diri = NULL;
key = (struct apk_db_file_hash_key) { key = (struct apk_db_file_hash_key) {
.dirname = APK_BLOB_STR(diri->dir->dirname), .dirname = APK_BLOB_STR(diri->dir->dirname),
.filename = APK_BLOB_STR(file->filename), .filename = APK_BLOB_STR(file->filename),
@ -1061,7 +1059,7 @@ static void apk_db_purge_pkg(struct apk_database *db,
APK_BLOB_BUF(&key)); APK_BLOB_BUF(&key));
unlink(name); unlink(name);
__hlist_del(fc, &diri->owned_files.first); __hlist_del(fc, &diri->owned_files.first);
file->diri = NULL;
db->installed.stats.files--; db->installed.stats.files--;
} }
apk_db_diri_rmdir(diri); apk_db_diri_rmdir(diri);

View File

@ -100,9 +100,8 @@ void apk_hash_delete(struct apk_hash *h, apk_blob_t key)
if (h->ops->compare_item(item, key) == 0) { if (h->ops->compare_item(item, key) == 0) {
hlist_del(pos, &h->buckets->item[hash]); hlist_del(pos, &h->buckets->item[hash]);
h->ops->delete_item(item); h->ops->delete_item(item);
return; break;
} }
} }
} else { } else {
hlist_for_each(pos, &h->buckets->item[hash]) { 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) { if (h->ops->compare(key, itemkey) == 0) {
hlist_del(pos, &h->buckets->item[hash]); hlist_del(pos, &h->buckets->item[hash]);
h->ops->delete_item(item); h->ops->delete_item(item);
return; break;
} }
} }
} }