From db662d799ab7042a4bf878c08cd2d141d35abd5c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20LE=20STUM?=
 <sebastien.le-stum@savoirfairelinux.com>
Date: Wed, 30 Sep 2020 16:02:30 -0400
Subject: [PATCH] sip: avoid modifying video codec list collection while
 iterating

Replace that unsafe behavior by a better erase + remove_if logic.

Change-Id: I388357653449524b83c9776c169e1104160fec57
---
 src/sip/sdp.cpp | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/src/sip/sdp.cpp b/src/sip/sdp.cpp
index 1a69a74cdc..ede4e84797 100644
--- a/src/sip/sdp.cpp
+++ b/src/sip/sdp.cpp
@@ -331,11 +331,8 @@ Sdp::setLocalMediaVideoCapabilities(
     video_codec_list_ = selectedCodecs;
     // Do not expose H265 if accel is disactivated
     if (not jami::Manager::instance().videoPreferences.getEncodingAccelerated()) {
-        for (auto it = video_codec_list_.begin(); it != video_codec_list_.end(); ++it) {
-            if ((*it)->systemCodecInfo.name == "H265") {
-                video_codec_list_.erase(it);
-            }
-        }
+        video_codec_list_.erase(std::remove_if(video_codec_list_.begin(), video_codec_list_.end(),
+                       [](const std::shared_ptr<AccountCodecInfo>& i){ return i->systemCodecInfo.name == "H265"; }), video_codec_list_.end());
     }
 #else
     (void) selectedCodecs;
-- 
GitLab