if (cookie == NULL)
return err;
+ if (cookie->cb != NULL)
+ cookie->cb(cookie->adapter_idx, cookie->target_idx, err);
+
if (cookie->ndef)
g_free(cookie->ndef->data);
} else if ((resp[OFFSET_HEADER_ROM] & 0xF0) == HR0_TYPE2_HIGH) {
near_tag_set_memory_layout(tag, NEAR_TAG_MEMORY_DYNAMIC);
err = read_dynamic_tag(cc, length, t1_tag);
+ /*
+ * As reading isn't complete,
+ * callback shouldn't be called while freeing the cookie
+ */
+ cookie->cb = NULL;
} else {
err = -EOPNOTSUPP;
}
out_err:
DBG("err %d", err);
- if (err < 0 && cookie->cb)
- cookie->cb(cookie->adapter_idx, cookie->target_idx, err);
-
return t1_cookie_release(err, cookie);
}
out_err:
DBG("err %d", err);
- if (err < 0 && cookie->cb)
- cookie->cb(cookie->adapter_idx, cookie->target_idx, err);
-
return t1_cookie_release(err, cookie);
}
DBG("Done writing");
- cookie->cb(cookie->adapter_idx, cookie->target_idx, err);
-
return t1_cookie_release(err, cookie);
}
return 0;
out_err:
- if (err < 0 && cookie->cb)
- cookie->cb(cookie->adapter_idx, cookie->target_idx, err);
-
return t1_cookie_release(err, cookie);
}
if (length < 0)
err = -EIO;
- if (cookie->cb)
- cookie->cb(cookie->adapter_idx,
- cookie->target_idx, err);
-
return t1_cookie_release(err, cookie);
}
}
out_err:
- if (cookie->cb)
- cookie->cb(cookie->adapter_idx, cookie->target_idx, err);
-
return t1_cookie_release(err, cookie);
}