diff --git a/attrib/client.c b/attrib/client.c
index ef7152a..380a288 100644
--- a/attrib/client.c
+++ b/attrib/client.c
{
struct gatt_service *gatt = user_data;
- gatt->attrib = attrib;
+ gatt->attrib = g_attrib_ref(attrib);
g_attrib_register(gatt->attrib, ATT_OP_HANDLE_NOTIFY,
events_handler, gatt, NULL);
{
struct gatt_service *gatt = user_data;
- gatt->attrib = NULL;
+ if (gatt->attrib) {
+ g_attrib_unref(gatt->attrib);
+ gatt->attrib = NULL;
+ }
}
static DBusMessage *register_watcher(DBusConnection *conn,
struct gatt_service *gatt = qchr->gatt;
struct att_primary *prim = gatt->prim;
- gatt->attrib = attrib;
+ gatt->attrib = g_attrib_ref(attrib);
gatt_discover_char(gatt->attrib, prim->start, prim->end, NULL,
char_discovered_cb, qchr);
struct query_data *qchr = user_data;
struct gatt_service *gatt = qchr->gatt;
+ g_attrib_unref(gatt->attrib);
gatt->attrib = NULL;
}