diff --git a/webrtc/api/stats/rtcstats.h b/webrtc/api/stats/rtcstats.h index d23e928fad..aea47c22ad 100644 --- a/webrtc/api/stats/rtcstats.h +++ b/webrtc/api/stats/rtcstats.h @@ -271,6 +271,8 @@ class RTCStatsMember : public RTCStatsMemberInterface { static_cast&>(other); if (!is_defined_) return !other_t.is_defined(); + if (!other.is_defined()) + return false; return value_ == other_t.value_; } std::string ValueToString() const override; diff --git a/webrtc/stats/rtcstats_unittest.cc b/webrtc/stats/rtcstats_unittest.cc index f24519467c..7854355744 100644 --- a/webrtc/stats/rtcstats_unittest.cc +++ b/webrtc/stats/rtcstats_unittest.cc @@ -172,6 +172,12 @@ TEST(RTCStatsTest, EqualityOperator) { RTCChildStats child("childId", 42); RTCGrandChildStats grandchild("grandchildId", 42); EXPECT_NE(child, grandchild); + + RTCChildStats stats_with_defined_member("leId", 0); + stats_with_defined_member.child_int = 0; + RTCChildStats stats_with_undefined_member("leId", 0); + EXPECT_NE(stats_with_defined_member, stats_with_undefined_member); + EXPECT_NE(stats_with_undefined_member, stats_with_defined_member); } TEST(RTCStatsTest, RTCStatsGrandChild) {