Use swap instead of copy in RtcHistogram::GetAndReset.
BUG=webrtc:5283
Review-Url: https://codereview.webrtc.org/2268323002
Cr-Commit-Position: refs/heads/master@{#15311}
diff --git a/webrtc/system_wrappers/source/metrics_default.cc b/webrtc/system_wrappers/source/metrics_default.cc
index 8ee10ba..d7d24fa 100644
--- a/webrtc/system_wrappers/source/metrics_default.cc
+++ b/webrtc/system_wrappers/source/metrics_default.cc
@@ -9,6 +9,8 @@
#include "webrtc/system_wrappers/include/metrics_default.h"
+#include <algorithm>
+
#include "webrtc/base/criticalsection.h"
#include "webrtc/base/thread_annotations.h"
#include "webrtc/system_wrappers/include/metrics.h"
@@ -34,10 +36,8 @@
}
void Add(int sample) {
- if (sample < min_)
- sample = min_ - 1; // Underflow bucket.
- if (sample > max_)
- sample = max_;
+ sample = std::min(sample, max_);
+ sample = std::max(sample, min_ - 1); // Underflow bucket.
rtc::CritScope cs(&crit_);
if (info_.samples.size() == kMaxSampleMapSize &&
@@ -55,8 +55,9 @@
SampleInfo* copy =
new SampleInfo(info_.name, info_.min, info_.max, info_.bucket_count);
- copy->samples = info_.samples;
- info_.samples.clear();
+
+ std::swap(info_.samples, copy->samples);
+
return std::unique_ptr<SampleInfo>(copy);
}