summaryrefslogtreecommitdiff
path: root/src/database.c
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2010-06-10 17:50:11 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2010-06-10 17:50:11 +0000
commit60b537e356dfcd0ed9a3516152c6a170912efcef (patch)
tree11cfcbc041965b4c34731bb97094bc7dce855261 /src/database.c
parent6b52c5dc84ce224f7abff2250153583df56f4cad (diff)
downloadapk-tools-60b537e356dfcd0ed9a3516152c6a170912efcef.tar.gz
apk-tools-60b537e356dfcd0ed9a3516152c6a170912efcef.tar.bz2
apk-tools-60b537e356dfcd0ed9a3516152c6a170912efcef.tar.xz
apk-tools-60b537e356dfcd0ed9a3516152c6a170912efcef.zip
db: do not free trigger list after package is unpacked
The triggers are read during apk_db_unpack_pkg(). If we delete the triggers list after then unpack we delete the triggers which is not what we want. This fixes bug introduced in ce3cf8bff901e7fcacbca640ffedaeea2b3bdf7f
Diffstat (limited to 'src/database.c')
-rw-r--r--src/database.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/database.c b/src/database.c
index 7421e1b..11864cb 100644
--- a/src/database.c
+++ b/src/database.c
@@ -2100,6 +2100,12 @@ int apk_db_install_pkg(struct apk_database *db,
/* Install the new stuff */
ipkg = apk_pkg_install(db, newpkg);
+ ipkg->flags |= APK_IPKGF_RUN_ALL_TRIGGERS;
+ if (ipkg->triggers->num != 0) {
+ list_del(&ipkg->trigger_pkgs_list);
+ apk_string_array_free(&ipkg->triggers);
+ }
+
if (newpkg->installed_size != 0) {
r = apk_db_unpack_pkg(db, ipkg, (oldpkg != NULL),
(oldpkg == newpkg), cb, cb_ctx,
@@ -2110,12 +2116,6 @@ int apk_db_install_pkg(struct apk_database *db,
}
}
- ipkg->flags |= APK_IPKGF_RUN_ALL_TRIGGERS;
- if (ipkg->triggers->num != 0) {
- list_del(&ipkg->trigger_pkgs_list);
- apk_string_array_free(&ipkg->triggers);
- }
-
if (oldpkg != NULL && oldpkg != newpkg && oldpkg->ipkg != NULL) {
apk_db_purge_pkg(db, oldpkg->ipkg, NULL);
apk_pkg_uninstall(db, oldpkg);