Config: D-Bus: Don't leak timers

TimerCancel doesn't free the timer: you need TimerFree for that.
This commit is contained in:
Daniel Stone 2007-12-28 15:47:21 +02:00
parent ae869fc766
commit f44fd3f9e4

View File

@ -76,7 +76,7 @@ teardown(void)
struct config_dbus_core_hook *hook; struct config_dbus_core_hook *hook;
if (bus_info.timer) { if (bus_info.timer) {
TimerCancel(bus_info.timer); TimerFree(bus_info.timer);
bus_info.timer = NULL; bus_info.timer = NULL;
} }
@ -116,6 +116,8 @@ message_filter(DBusConnection *connection, DBusMessage *message, void *data)
bus_info.connection = NULL; bus_info.connection = NULL;
teardown(); teardown();
if (bus_info.timer)
TimerFree(bus_info.timer);
bus_info.timer = TimerSet(NULL, 0, 1, reconnect_timer, NULL); bus_info.timer = TimerSet(NULL, 0, 1, reconnect_timer, NULL);
return DBUS_HANDLER_RESULT_HANDLED; return DBUS_HANDLER_RESULT_HANDLED;
@ -186,6 +188,7 @@ static CARD32
reconnect_timer(OsTimerPtr timer, CARD32 time, pointer arg) reconnect_timer(OsTimerPtr timer, CARD32 time, pointer arg)
{ {
if (connect_to_bus()) { if (connect_to_bus()) {
TimerFree(bus_info.timer);
bus_info.timer = NULL; bus_info.timer = NULL;
return 0; return 0;
} }