From 85fae2acc5a4604b38b27ced4c579cb6f1dd067c Mon Sep 17 00:00:00 2001 From: Mirko Bonadei Date: Thu, 5 Nov 2020 16:08:13 +0100 Subject: [PATCH] Fix -Wrange-loop-analysis. The new xcode-clang in xcode 12 turns on -Wrange-loop-analysis by default, this CL tries to fix problems caused by this. Bug: webrtc:12134 Change-Id: I77fd9a28486690c11dceceafc4d72f131b081788 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/191762 Commit-Queue: Mirko Bonadei Reviewed-by: Karl Wiberg Cr-Commit-Position: refs/heads/master@{#32559} --- sdk/objc/api/peerconnection/RTCStatisticsReport.mm | 2 +- stats/rtc_stats.cc | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/sdk/objc/api/peerconnection/RTCStatisticsReport.mm b/sdk/objc/api/peerconnection/RTCStatisticsReport.mm index ab8006d9bd..1dd72772ed 100644 --- a/sdk/objc/api/peerconnection/RTCStatisticsReport.mm +++ b/sdk/objc/api/peerconnection/RTCStatisticsReport.mm @@ -37,7 +37,7 @@ NSObject *ValueFromStatsMember(const RTCStatsMemberInterface *member) { case RTCStatsMemberInterface::kSequenceBool: { std::vector sequence = *member->cast_to>>(); NSMutableArray *array = [NSMutableArray arrayWithCapacity:sequence.size()]; - for (const auto &item : sequence) { + for (auto item : sequence) { [array addObject:[NSNumber numberWithBool:item]]; } return [array copy]; diff --git a/stats/rtc_stats.cc b/stats/rtc_stats.cc index b8e9633f46..59de664c0e 100644 --- a/stats/rtc_stats.cc +++ b/stats/rtc_stats.cc @@ -35,6 +35,20 @@ std::string VectorToString(const std::vector& vector) { return sb.Release(); } +// This overload is required because std::vector range loops don't +// return references but objects, causing -Wrange-loop-analysis diagnostics. +std::string VectorToString(const std::vector& vector) { + rtc::StringBuilder sb; + sb << "["; + const char* separator = ""; + for (bool element : vector) { + sb << separator << rtc::ToString(element); + separator = ","; + } + sb << "]"; + return sb.Release(); +} + // Produces "[\"a\",\"b\",\"c\"]". Works for vectors of both const char* and // std::string element types. template