Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ffb14a24 authored by Hall Liu's avatar Hall Liu
Browse files

Fix ConcurrentModificationException in BT handling

Add lock around access to a member hashmap so we don't get a race
condition in multithreading scenarios.

Test: manual
Fixes: 133828205
Change-Id: I3c1c46201865c8e0ae8f9d69e8bb63edf1477954
parent e3a6b43d
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -142,7 +142,10 @@ public class BluetoothDeviceManager {
    // Same as getConnectedDevices except it filters out the hearing aid devices that are linked
    // together by their hiSyncId.
    public Collection<BluetoothDevice> getUniqueConnectedDevices() {
        ArrayList<BluetoothDevice> result = new ArrayList<>(mHfpDevicesByAddress.values());
        ArrayList<BluetoothDevice> result;
        synchronized (mLock) {
            result = new ArrayList<>(mHfpDevicesByAddress.values());
        }
        Set<Long> seenHiSyncIds = new LinkedHashSet<>();
        // Add the left-most active device to the seen list so that we match up with the list
        // generated in BluetoothRouteManager.