OSDN Git Service

Fix incorrect enum comparison of LE close reason
authorAbhishek Pandit-Subedi <abhishekpandit@google.com>
Tue, 11 May 2021 17:20:36 +0000 (17:20 +0000)
committerChris Manton <cmanton@google.com>
Tue, 11 May 2021 20:05:32 +0000 (20:05 +0000)
The LE close reason is tGATT_DISCONN_REASON but it's compared against
tHCI_ERROR_CODE. Besides just being different types, they are also
backed by different primitives (u16 for gatt vs u8 for hci). This fails
in stricter build environments (i.e. ChromeOS).

Bug: 187836537
Tag: #floss
Test: atest --host bluetooth_test_gd
Change-Id: I0f926b6fad9f20adde5e1e7ff89bcc7c8da01f93

bta/hh/bta_hh_le.cc

index efc6bb8..3608058 100644 (file)
@@ -1625,7 +1625,7 @@ void bta_hh_gatt_close(tBTA_HH_DEV_CB* p_cb, const tBTA_HH_DATA* p_data) {
   if (bta_hh_cb.cnt_num == 0 && bta_hh_cb.w4_disable) {
     bta_hh_disc_cmpl();
   } else if (kBTA_HH_LE_RECONN &&
-             p_data->le_close.reason == HCI_ERR_CONNECTION_TOUT) {
+             p_data->le_close.reason == GATT_CONN_TIMEOUT) {
     bta_hh_le_add_dev_bg_conn(p_cb, false);
   }
 }