From 5e48c2bfef87e37476ca60647ef5fd8194b777b0 Mon Sep 17 00:00:00 2001 From: baohongde Date: Thu, 8 Feb 2018 11:18:30 +0800 Subject: [PATCH] component/bt: Fix mem leak of bt in v3.0 --- components/bt/bluedroid/bta/av/bta_av_act.c | 2 ++ .../bt/bluedroid/btc/profile/std/a2dp/btc_media_task.c | 8 ++++++++ examples/bluetooth/a2dp_sink/main/bt_app_core.c | 4 ++-- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/components/bt/bluedroid/bta/av/bta_av_act.c b/components/bt/bluedroid/bta/av/bta_av_act.c index 9b00d62cea..b86875870c 100644 --- a/components/bt/bluedroid/bta/av/bta_av_act.c +++ b/components/bt/bluedroid/bta/av/bta_av_act.c @@ -1847,6 +1847,8 @@ void bta_av_dereg_comp(tBTA_AV_DATA *p_data) /* make sure that the timer is not active */ bta_sys_stop_timer(&p_scb->timer); + list_free(p_scb->a2d_list); + p_scb->a2d_list = NULL; utl_freebuf((void **)&p_cb->p_scb[p_scb->hdi]); } diff --git a/components/bt/bluedroid/btc/profile/std/a2dp/btc_media_task.c b/components/bt/bluedroid/btc/profile/std/a2dp/btc_media_task.c index 94e77cd717..89f00d29de 100644 --- a/components/bt/bluedroid/btc/profile/std/a2dp/btc_media_task.c +++ b/components/bt/bluedroid/btc/profile/std/a2dp/btc_media_task.c @@ -319,6 +319,11 @@ error_exit:; xBtcMediaCtrlQueue = NULL; } + if (xBtcMediaQueueSet) { + vQueueDelete(xBtcMediaQueueSet); + xBtcMediaQueueSet = NULL; + } + fixed_queue_free(btc_media_cmd_msg_queue, NULL); btc_media_cmd_msg_queue = NULL; return false; @@ -340,6 +345,9 @@ void btc_a2dp_stop_media_task(void) vQueueDelete(xBtcMediaCtrlQueue); xBtcMediaCtrlQueue = NULL; + vQueueDelete(xBtcMediaQueueSet); + xBtcMediaQueueSet = NULL; + fixed_queue_free(btc_media_cmd_msg_queue, NULL); btc_media_cmd_msg_queue = NULL; } diff --git a/examples/bluetooth/a2dp_sink/main/bt_app_core.c b/examples/bluetooth/a2dp_sink/main/bt_app_core.c index 533dfda2f2..e84d51720d 100644 --- a/examples/bluetooth/a2dp_sink/main/bt_app_core.c +++ b/examples/bluetooth/a2dp_sink/main/bt_app_core.c @@ -33,7 +33,7 @@ static xTaskHandle bt_app_task_handle = NULL; bool bt_app_work_dispatch(bt_app_cb_t p_cback, uint16_t event, void *p_params, int param_len, bt_app_copy_cb_t p_copy_cback) { ESP_LOGD(BT_APP_CORE_TAG, "%s event 0x%x, param len %d", __func__, event, param_len); - + bt_app_msg_t msg; memset(&msg, 0, sizeof(bt_app_msg_t)); @@ -102,7 +102,7 @@ static void bt_app_task_handler(void *arg) void bt_app_task_start_up(void) { bt_app_task_queue = xQueueCreate(10, sizeof(bt_app_msg_t)); - xTaskCreate(bt_app_task_handler, "BtAppT", 2048, NULL, configMAX_PRIORITIES - 3, bt_app_task_handle); + xTaskCreate(bt_app_task_handler, "BtAppT", 2048, NULL, configMAX_PRIORITIES - 3, &bt_app_task_handle); return; }