aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/dbus/dbus-1.3.0/will-4.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/dbus/dbus-1.3.0/will-4.patch')
-rw-r--r--recipes/dbus/dbus-1.3.0/will-4.patch56
1 files changed, 56 insertions, 0 deletions
diff --git a/recipes/dbus/dbus-1.3.0/will-4.patch b/recipes/dbus/dbus-1.3.0/will-4.patch
new file mode 100644
index 0000000000..2b2303bab3
--- /dev/null
+++ b/recipes/dbus/dbus-1.3.0/will-4.patch
@@ -0,0 +1,56 @@
+From 9da8cbb9d9155bce885e0cfb39ba18a22ee6a76d Mon Sep 17 00:00:00 2001
+From: Will Thompson <will.thompson@collabora.co.uk>
+Date: Wed, 29 Jul 2009 18:52:28 +0100
+Subject: [PATCH 4/6] Extract freeing a DBusList<BusMatchRule>
+
+---
+ bus/signals.c | 26 ++++++++++++++------------
+ 1 files changed, 14 insertions(+), 12 deletions(-)
+
+diff --git a/bus/signals.c b/bus/signals.c
+index 0509dd5..3cf846e 100644
+--- a/bus/signals.c
++++ b/bus/signals.c
+@@ -1029,6 +1029,19 @@ struct BusMatchmaker
+ DBusList *rules_by_type[DBUS_NUM_MESSAGE_TYPES];
+ };
+
++static void
++rule_list_free (DBusList **rules)
++{
++ while (*rules != NULL)
++ {
++ BusMatchRule *rule;
++
++ rule = (*rules)->data;
++ bus_match_rule_unref (rule);
++ _dbus_list_remove_link (rules, *rules);
++ }
++}
++
+ BusMatchmaker*
+ bus_matchmaker_new (void)
+ {
+@@ -1074,18 +1087,7 @@ bus_matchmaker_unref (BusMatchmaker *matchmaker)
+ int i;
+
+ for (i = DBUS_MESSAGE_TYPE_INVALID; i < DBUS_NUM_MESSAGE_TYPES; i++)
+- {
+- DBusList **rules = bus_matchmaker_get_rules (matchmaker, i);
+-
+- while (*rules != NULL)
+- {
+- BusMatchRule *rule;
+-
+- rule = (*rules)->data;
+- bus_match_rule_unref (rule);
+- _dbus_list_remove_link (rules, *rules);
+- }
+- }
++ rule_list_free (bus_matchmaker_get_rules (matchmaker, i));
+
+ dbus_free (matchmaker);
+ }
+--
+1.6.3.3
+