diff --git a/components/bt/bluedroid/btc/profile/esp/blufi/blufi_prf.c b/components/bt/bluedroid/btc/profile/esp/blufi/blufi_prf.c index 873b5ed84..45c220b3b 100644 --- a/components/bt/bluedroid/btc/profile/esp/blufi/blufi_prf.c +++ b/components/bt/bluedroid/btc/profile/esp/blufi/blufi_prf.c @@ -170,6 +170,14 @@ static void blufi_profile_cb(tBTA_GATTS_EVT event, tBTA_GATTS *p_data) BTA_GATTS_SendRsp(p_data->req_data.conn_id, p_data->req_data.trans_id, status, &rsp); + if(status != GATT_SUCCESS) { + if (blufi_env.prepare_buf) { + osi_free(blufi_env.prepare_buf); + blufi_env.prepare_buf = NULL; + } + BLUFI_TRACE_ERROR("write data error , error code 0x%x\n", status); + return; + } memcpy(blufi_env.prepare_buf + p_data->req_data.p_data->write_req.offset, p_data->req_data.p_data->write_req.value, p_data->req_data.p_data->write_req.len); @@ -194,7 +202,7 @@ static void blufi_profile_cb(tBTA_GATTS_EVT event, tBTA_GATTS *p_data) BTA_GATTS_SendRsp(p_data->req_data.conn_id, p_data->req_data.trans_id, GATT_SUCCESS, NULL); - if (p_data->req_data.p_data->exec_write == GATT_PREP_WRITE_EXEC) { + if (blufi_env.prepare_buf && p_data->req_data.p_data->exec_write == GATT_PREP_WRITE_EXEC) { btc_blufi_recv_handler(blufi_env.prepare_buf, blufi_env.prepare_len); }