diff options
author | Will Thompson <will.thompson@collabora.co.uk> | 2009-07-29 18:52:28 +0100 |
---|---|---|
committer | Ralf Habacker <ralf.habacker@freenet.de> | 2010-01-05 21:11:11 +0100 |
commit | a2c4eca52a4de27daa022b346e8eba2c0abf5ac8 (patch) | |
tree | 3a5449c8a5c08166e476d84a533ee877344e90ce /bus/signals.c | |
parent | 38ead76613ec9d920baca976b371140189219be0 (diff) | |
download | dbus-a2c4eca52a4de27daa022b346e8eba2c0abf5ac8.tar.gz |
Extract freeing a DBusList<BusMatchRule>
Diffstat (limited to 'bus/signals.c')
-rw-r--r-- | bus/signals.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/bus/signals.c b/bus/signals.c index 0509dd58..3cf846ea 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); } |