mirror of git://git.sysmocom.de/ofono
Fix D-Bus timeout handling
Timeouts should also be removed in the remove_timeout callback in addition to the timeout_handler_free function. This is how dbus-glib does it and it seems to prevent crashes in certain situations.
This commit is contained in:
parent
8e1c3fe2bc
commit
9c688fff68
|
@ -183,7 +183,11 @@ static void timeout_handler_free(void *data)
|
|||
if (!handler)
|
||||
return;
|
||||
|
||||
g_source_remove(handler->id);
|
||||
if (handler->id > 0) {
|
||||
g_source_remove(handler->id);
|
||||
handler->id = 0;
|
||||
}
|
||||
|
||||
g_free(handler);
|
||||
}
|
||||
|
||||
|
@ -207,6 +211,17 @@ static dbus_bool_t add_timeout(DBusTimeout *timeout, void *data)
|
|||
|
||||
static void remove_timeout(DBusTimeout *timeout, void *data)
|
||||
{
|
||||
timeout_handler_t *handler;
|
||||
|
||||
handler = dbus_timeout_get_data(timeout);
|
||||
|
||||
if (!handler)
|
||||
return;
|
||||
|
||||
if (handler->id > 0) {
|
||||
g_source_remove(handler->id);
|
||||
handler->id = 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void timeout_toggled(DBusTimeout *timeout, void *data)
|
||||
|
|
Loading…
Reference in New Issue