Hi Lizardo, On Thu, Jul 14, 2011, Anderson Lizardo wrote: > On Thu, Jul 14, 2011 at 10:44 AM, Johan Hedberg <johan.hedberg@xxxxxxxxx> wrote: > >> @@ -2605,10 +2605,15 @@ gboolean btd_device_remove_attio_callback(struct btd_device *device, guint id) > >> > >> g_free(attio); > >> > >> + if (device->attios != NULL) > >> + return TRUE; > >> + > >> if (device->attioid) { > >> g_source_remove(device->attioid); > >> device->attioid = 0; > >> } > >> > >> + g_attrib_unref(device->attrib); > >> + > >> return TRUE; > >> } > > > > Looks like you're missing a device->attrib = NULL; after the unref. > > I really don't see the point in setting a reference counted variable > to NULL. How would we know whether this is the last usage or not? You're not supposed to know. All you know is that device->attrib is one reference to the GAttrib object. Calling unref is akin to saying "this pointer is no longer valid" and since the btd_device object keeps living after this function you should set the ->attrib pointer to NULL after dropping this reference. Johan -- 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