]> granicus.if.org Git - esp-idf/commitdiff
component/bt: Fix bug of memory leak of gatt open and close
authorbaohongde <baohongde@espressif.com>
Wed, 27 Sep 2017 06:57:48 +0000 (14:57 +0800)
committerbaohongde <baohongde@espressif.com>
Thu, 28 Sep 2017 06:34:57 +0000 (14:34 +0800)
components/bt/bluedroid/stack/l2cap/l2c_utils.c

index 68bc2b58d6062fcf03acb7961452e85fe0e125ff..a8b7a538c9e70d63f529ced4ddfd3bd11207dc15 100644 (file)
@@ -1506,9 +1506,11 @@ tL2C_CCB *l2cu_allocate_ccb (tL2C_LCB *p_lcb, UINT16 cid)
     p_ccb->tx_mps                    = L2CAP_FCR_TX_BUF_SIZE - 32;
 
     p_ccb->xmit_hold_q  = fixed_queue_new(SIZE_MAX);
+#if (CLASSIC_BT_INCLUDED == TRUE)
     p_ccb->fcrb.srej_rcv_hold_q = fixed_queue_new(SIZE_MAX);
     p_ccb->fcrb.retrans_q = fixed_queue_new(SIZE_MAX);
     p_ccb->fcrb.waiting_for_ack_q = fixed_queue_new(SIZE_MAX);
+#endif  ///CLASSIC_BT_INCLUDED == TRUE
 
     p_ccb->cong_sent    = FALSE;
     p_ccb->buff_quota   = 2;                /* This gets set after config */
@@ -1631,6 +1633,12 @@ void l2cu_release_ccb (tL2C_CCB *p_ccb)
 
 
     fixed_queue_free(p_ccb->xmit_hold_q, osi_free_func);
+#if (CLASSIC_BT_INCLUDED == TRUE)
+    fixed_queue_free(p_ccb->fcrb.srej_rcv_hold_q, osi_free_func);
+    fixed_queue_free(p_ccb->fcrb.retrans_q, osi_free_func);
+    fixed_queue_free(p_ccb->fcrb.waiting_for_ack_q, osi_free_func);
+#endif  ///CLASSIC_BT_INCLUDED == TRUE
+
     p_ccb->xmit_hold_q = NULL;
 
 #if (CLASSIC_BT_INCLUDED == TRUE)