aboutsummaryrefslogtreecommitdiffstats
path: root/main/apk-tools/triggers.patch
blob: 4702e0f85a7eee02fa1f8f8b7fa0b91ce481e779 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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);