Prevent potential nullptr dereference if metrics are not enabled. If `webrtc::metrics::Enable();` has not been called, then `metrics::HistogramFactoryGetCountsLinear()` may return a nullptr. Bug: None Change-Id: Id5c01c461fbac818dd91d31a0c2a7fce4fa4f15e Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/485100 Reviewed-by: Jeremy Leconte <jleconte@google.com> Commit-Queue: Erik Språng <sprang@webrtc.org> Cr-Commit-Position: refs/heads/main@{#48074}
diff --git a/video/send_statistics_proxy.cc b/video/send_statistics_proxy.cc index 92b247b..28ca239 100644 --- a/video/send_statistics_proxy.cc +++ b/video/send_statistics_proxy.cc
@@ -315,27 +315,42 @@ psnr_counters.psnr_y.Avg(kMinRequiredPsnrSamples); if (psnr_y.has_value()) { uma_name.back() = 'Y'; - metrics::HistogramAdd(metrics::HistogramFactoryGetCountsLinear( - uma_name, kPsnrMin, kPsnrMax, kPsnrBucketCount), - psnr_y.value() * kPsnrScalingFactor); + metrics::Histogram* histogram = metrics::HistogramFactoryGetCountsLinear( + uma_name, kPsnrMin, kPsnrMax, kPsnrBucketCount); + if (histogram) { + metrics::HistogramAdd(histogram, psnr_y.value() * kPsnrScalingFactor); + } else { + RTC_LOG(LS_WARNING) << "Failed to create histogram for " << uma_name + << ". psnr_y = " << psnr_y.value(); + } } std::optional<float> psnr_u = psnr_counters.psnr_u.Avg(kMinRequiredPsnrSamples); if (psnr_u.has_value()) { uma_name.back() = 'U'; - metrics::HistogramAdd(metrics::HistogramFactoryGetCountsLinear( - uma_name, kPsnrMin, kPsnrMax, kPsnrBucketCount), - psnr_u.value() * kPsnrScalingFactor); + metrics::Histogram* histogram = metrics::HistogramFactoryGetCountsLinear( + uma_name, kPsnrMin, kPsnrMax, kPsnrBucketCount); + if (histogram) { + metrics::HistogramAdd(histogram, psnr_u.value() * kPsnrScalingFactor); + } else { + RTC_LOG(LS_WARNING) << "Failed to create histogram for " << uma_name + << ". psnr_u = " << psnr_u.value(); + } } std::optional<float> psnr_v = psnr_counters.psnr_v.Avg(kMinRequiredPsnrSamples); if (psnr_v.has_value()) { uma_name.back() = 'V'; - metrics::HistogramAdd(metrics::HistogramFactoryGetCountsLinear( - uma_name, kPsnrMin, kPsnrMax, kPsnrBucketCount), - psnr_v.value() * kPsnrScalingFactor); + metrics::Histogram* histogram = metrics::HistogramFactoryGetCountsLinear( + uma_name, kPsnrMin, kPsnrMax, kPsnrBucketCount); + if (histogram) { + metrics::HistogramAdd(histogram, psnr_v.value() * kPsnrScalingFactor); + } else { + RTC_LOG(LS_WARNING) << "Failed to create histogram for " << uma_name + << ". psnr_v = " << psnr_v.value(); + } } }