Index: device/bluetooth/bluetooth_adapter_android.cc |
diff --git a/device/bluetooth/bluetooth_adapter_android.cc b/device/bluetooth/bluetooth_adapter_android.cc |
index 41228bb635bae3ac24c26c8b50bb22d539a22013..01995d439cf3e625e9df56ccb0ae3fbee43a5e4b 100644 |
--- a/device/bluetooth/bluetooth_adapter_android.cc |
+++ b/device/bluetooth/bluetooth_adapter_android.cc |
@@ -197,7 +197,7 @@ void BluetoothAdapterAndroid::CreateOrUpdateDeviceOnScan( |
device_android = device_android_owner.get(); |
} else { |
// Existing device. |
- device_android = static_cast<BluetoothDeviceAndroid*>(iter->second); |
+ device_android = static_cast<BluetoothDeviceAndroid*>(iter->second.get()); |
} |
DCHECK(device_android); |
@@ -219,9 +219,12 @@ void BluetoothAdapterAndroid::CreateOrUpdateDeviceOnScan( |
tx_power == INT32_MIN ? nullptr : &clamped_tx_power); |
if (is_new_device) { |
- devices_.add(device_address, std::move(device_android_owner)); |
- for (auto& observer : observers_) |
- observer.DeviceAdded(this, device_android); |
+ auto insertion = devices_.insert( |
+ std::make_pair(device_address, std::move(device_android_owner))); |
+ if (insertion.second) { |
+ for (auto& observer : observers_) |
+ observer.DeviceAdded(this, insertion.first->second.get()); |
+ } |
} else { |
for (auto& observer : observers_) |
observer.DeviceChanged(this, device_android); |