Free buffer only in case of error in NFC_DATA_CEVT
Bug: 120711800
Test: Read/Write tag 15693
Change-Id: Ieedc80b6f4e3c40b5ade7c242ae1366c9c8b694b
diff --git a/src/nfc/tags/rw_i93.cc b/src/nfc/tags/rw_i93.cc
index c8667a4..1e62d34 100644
--- a/src/nfc/tags/rw_i93.cc
+++ b/src/nfc/tags/rw_i93.cc
@@ -2912,8 +2912,10 @@
p_resp = p_i93->p_retry_cmd;
p_i93->p_retry_cmd = nullptr;
if (rw_i93_send_to_lower(p_resp)) {
- p_resp = (NFC_HDR*)p_data->data.p_data;
- GKI_freebuf(p_resp);
+ if (event == NFC_DATA_CEVT) {
+ p_resp = (NFC_HDR*)p_data->data.p_data;
+ GKI_freebuf(p_resp);
+ }
return;
}
}
@@ -2936,8 +2938,10 @@
NFC_SetStaticRfCback(nullptr);
p_i93->state = RW_I93_STATE_NOT_ACTIVATED;
}
- p_resp = (NFC_HDR*)p_data->data.p_data;
- GKI_freebuf(p_resp);
+ if ((event == NFC_DATA_CEVT) && (p_data->status != NFC_STATUS_OK)) {
+ p_resp = (NFC_HDR*)p_data->data.p_data;
+ GKI_freebuf(p_resp);
+ }
return;
}