From: Luiz Augusto von Dentz <luiz.dentz-von@xxxxxxxxx> The callback may have remove itself before returning. --- src/device.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/src/device.c b/src/device.c index c2b6682..7c421e3 100644 --- a/src/device.c +++ b/src/device.c @@ -798,6 +798,10 @@ void device_request_disconnect(struct btd_device *device, DBusMessage *msg) data->watch(device, device->temporary, data->user_data); + /* Check if the watch has been removed by callback function */ + if (!g_slist_find(device->watches, data)) + continue; + device->watches = g_slist_remove(device->watches, data); g_free(data); } -- 1.7.1 -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html