Hi, On 9 December 2014 at 09:40, Lukasz Rymanowski <lukasz.rymanowski@xxxxxxxxx> wrote: > This patch makes sure that attrib instance will not disappear while > reading characteristic Just noticed that there is small issue in the commit msg. Should be "attrib/gatt" instead of "attrib/gatt.c" :) Please fix when pushing or let me know so I will send v2. \Lukasz > --- > attrib/gatt.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > diff --git a/attrib/gatt.c b/attrib/gatt.c > index f8ff2a5..0e633f7 100644 > --- a/attrib/gatt.c > +++ b/attrib/gatt.c > @@ -673,6 +673,8 @@ static void read_long_destroy(gpointer user_data) > if (__sync_sub_and_fetch(&long_read->ref, 1) > 0) > return; > > + g_attrib_unref(long_read->attrib); > + > if (long_read->buffer != NULL) > g_free(long_read->buffer); > > @@ -776,7 +778,7 @@ guint gatt_read_char(GAttrib *attrib, uint16_t handle, GAttribResultFunc func, > if (long_read == NULL) > return 0; > > - long_read->attrib = attrib; > + long_read->attrib = g_attrib_ref(attrib); > long_read->func = func; > long_read->user_data = user_data; > long_read->handle = handle; > @@ -785,9 +787,10 @@ guint gatt_read_char(GAttrib *attrib, uint16_t handle, GAttribResultFunc func, > plen = enc_read_req(handle, buf, buflen); > id = g_attrib_send(attrib, 0, buf, plen, read_char_helper, > long_read, read_long_destroy); > - if (id == 0) > + if (id == 0) { > + g_attrib_unref(long_read->attrib); > g_free(long_read); > - else { > + } else { > __sync_fetch_and_add(&long_read->ref, 1); > long_read->id = id; > } > -- > 1.8.4 > -- 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