From: Will Thompson Date: Wed, 29 Jul 2009 17:52:28 +0000 (+0100) Subject: Extract freeing a DBusList X-Git-Tag: dbus-1.3.1~120^2~42 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a2c4eca52a4de27daa022b346e8eba2c0abf5ac8;p=thirdparty%2Fdbus.git Extract freeing a DBusList --- diff --git a/bus/signals.c b/bus/signals.c index 0509dd587..3cf846eaf 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); }