diff --git a/services/audio_policy/server/domain/pipe/src/audio_pipe_manager.cpp b/services/audio_policy/server/domain/pipe/src/audio_pipe_manager.cpp index 9d68f8d1f556225934c27d18a37ef64497659dfc..59c4a0b448725def2db04732a90f575cd5a244cc 100644 --- a/services/audio_policy/server/domain/pipe/src/audio_pipe_manager.cpp +++ b/services/audio_policy/server/domain/pipe/src/audio_pipe_manager.cpp @@ -45,10 +45,12 @@ void AudioPipeManager::AddAudioPipeInfo(std::shared_ptr info) void AudioPipeManager::RemoveAudioPipeInfo(std::shared_ptr info) { std::unique_lock pLock(pipeListLock_); - for (auto iter = curPipeList_.begin(); iter != curPipeList_.end(); iter++) { + for (auto iter = curPipeList_.begin(); iter != curPipeList_.end();) { if (IsSamePipe(info, *iter)) { AUDIO_INFO_LOG("Remove id:%{public}u, name %{public}s", info->id_, info->name_.c_str()); curPipeList_.erase(iter); + } else { + iter++; } } } @@ -56,10 +58,12 @@ void AudioPipeManager::RemoveAudioPipeInfo(std::shared_ptr info) void AudioPipeManager::RemoveAudioPipeInfo(AudioIOHandle id) { std::unique_lock pLock(pipeListLock_); - for (auto iter = curPipeList_.begin(); iter != curPipeList_.end(); iter++) { + for (auto iter = curPipeList_.begin(); iter != curPipeList_.end();) { if ((*iter)->id_ == id) { AUDIO_INFO_LOG("Remove id:%{public}u, name: %{public}s", id, (*iter)->name_.c_str()); curPipeList_.erase(iter); + } else { + iter++; } } }