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

Commit 2dd3e5c3 authored by Himanshu Rawat's avatar Himanshu Rawat
Browse files

Garbage values in the DSA mode list

Iterators from two different vectors caused the large number of garbage
being collected.

Test: mmm packages/modules/Bluetooth
Bug: 314844884
Bug: 309665975
Change-Id: I310b33acba4aa7d7652bf5b7acca3e1ee6e2d1ee
parent 229e65e5
Loading
Loading
Loading
Loading
+13 −4
Original line number Diff line number Diff line
@@ -327,14 +327,23 @@ class LeAudioDeviceGroup {
      int direction = types::kLeAudioDirectionBoth) const;

  DsaModes GetAllowedDsaModes() {
    DsaModes dsa_modes = {};
    if (!IS_FLAG_ENABLED(leaudio_dynamic_spatial_audio)) {
      return {DsaMode::DISABLED};
    }

    DsaModes dsa_modes{};
    std::set<DsaMode> dsa_mode_set{};

    for (auto leAudioDevice : leAudioDevices_) {
      if (leAudioDevice.expired()) continue;

      dsa_modes.insert(dsa_modes.end(),
                       leAudioDevice.lock()->GetDsaModes().begin(),
                       leAudioDevice.lock()->GetDsaModes().end());
      auto device_dsa_modes = leAudioDevice.lock()->GetDsaModes();

      dsa_mode_set.insert(device_dsa_modes.begin(), device_dsa_modes.end());
    }

    dsa_modes.assign(dsa_mode_set.begin(), dsa_mode_set.end());

    return dsa_modes;
  }