fix spp vfs demo crash when use dynamic memory
This commit is contained in:
@@ -671,12 +671,8 @@ static void btc_spp_start_srv(btc_spp_args_t *arg)
|
||||
|
||||
if (ret != ESP_SPP_SUCCESS) {
|
||||
esp_spp_cb_param_t param;
|
||||
param.srv_open.status = ret;
|
||||
param.srv_open.handle = 0;
|
||||
param.srv_open.new_listen_handle = 0;
|
||||
param.srv_open.fd = -1;
|
||||
memset(param.srv_open.rem_bda, 0, ESP_BD_ADDR_LEN);
|
||||
btc_spp_cb_to_app(ESP_SPP_SRV_OPEN_EVT, ¶m);
|
||||
param.start.status = ret;
|
||||
btc_spp_cb_to_app(ESP_SPP_START_EVT, ¶m);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1215,6 +1211,7 @@ int bta_co_rfc_data_outgoing(void *user_data, uint8_t *buf, uint16_t size)
|
||||
static ssize_t spp_vfs_write(int fd, const void * data, size_t size)
|
||||
{
|
||||
assert(data != NULL);
|
||||
errno = 0;
|
||||
if (size == 0) {
|
||||
return 0;
|
||||
}
|
||||
@@ -1302,11 +1299,18 @@ static ssize_t spp_vfs_write(int fd, const void * data, size_t size)
|
||||
}
|
||||
osi_mutex_unlock(&spp_local_param.spp_slot_mutex);
|
||||
}
|
||||
|
||||
//errors occur, need to cleanup
|
||||
if (p_buf) {
|
||||
osi_free(p_buf);
|
||||
p_buf = NULL;
|
||||
}
|
||||
return sent;
|
||||
}
|
||||
|
||||
static int spp_vfs_close(int fd)
|
||||
{
|
||||
errno = 0;
|
||||
if (!is_spp_init()) {
|
||||
BTC_TRACE_ERROR("%s SPP have not been init\n", __func__);
|
||||
errno = ESRCH;
|
||||
@@ -1329,6 +1333,7 @@ static int spp_vfs_close(int fd)
|
||||
static ssize_t spp_vfs_read(int fd, void * dst, size_t size)
|
||||
{
|
||||
assert(dst != NULL);
|
||||
errno = 0;
|
||||
if (!is_spp_init()) {
|
||||
BTC_TRACE_ERROR("%s SPP have not been init\n", __func__);
|
||||
errno = ESRCH;
|
||||
@@ -1406,6 +1411,11 @@ static ssize_t spp_vfs_read(int fd, void * dst, size_t size)
|
||||
|
||||
esp_err_t btc_spp_vfs_register()
|
||||
{
|
||||
if (!is_spp_init()) {
|
||||
BTC_TRACE_ERROR("%s SPP have not been init\n", __func__);
|
||||
return ESP_FAIL;
|
||||
}
|
||||
|
||||
esp_vfs_t vfs = {
|
||||
.flags = ESP_VFS_FLAG_DEFAULT,
|
||||
.write = spp_vfs_write,
|
||||
|
||||
Reference in New Issue
Block a user