diff options
Diffstat (limited to 'main/apk-tools/triggers.patch')
-rw-r--r-- | main/apk-tools/triggers.patch | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/main/apk-tools/triggers.patch b/main/apk-tools/triggers.patch new file mode 100644 index 000000000..4702e0f85 --- /dev/null +++ b/main/apk-tools/triggers.patch @@ -0,0 +1,42 @@ +commit 60b537e356dfcd0ed9a3516152c6a170912efcef +Author: Natanael Copa <ncopa@alpinelinux.org> +Date: Thu Jun 10 17:50:11 2010 +0000 + + 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 + +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); |