fix spp vfs demo crash when use dynamic memory

This commit is contained in:
liqigan
2020-12-23 15:26:58 +08:00
parent 64dfa78eed
commit d64a19b73c
3 changed files with 42 additions and 23 deletions

View File

@@ -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, &param);
param.start.status = ret;
btc_spp_cb_to_app(ESP_SPP_START_EVT, &param);
}
}
@@ -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,