diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2010-06-10 17:50:11 +0000 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2010-06-10 17:50:11 +0000 |
commit | 60b537e356dfcd0ed9a3516152c6a170912efcef (patch) | |
tree | 11cfcbc041965b4c34731bb97094bc7dce855261 /src | |
parent | 6b52c5dc84ce224f7abff2250153583df56f4cad (diff) | |
download | apk-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')
-rw-r--r-- | src/database.c | 12 |
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); |