From 6e1c6297a3f8fcd243ec6b31d3832d84c7df474c Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 18 Oct 2022 15:37:37 -0400 Subject: fixed_point: Mark default constructor as constexpr Ensures that a fixed-point value is always initialized This likely also fixes several cases of uninitialized values being operated on, since we have multiple areas in the codebase where the default constructor is being used like: Common::FixedPoint<50, 14> current_sample{}; and is then followed up with an arithmetic operation like += or something else, which operates directly on FixedPoint's internal data member, which would previously be uninitialized. --- src/common/fixed_point.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/common/fixed_point.h b/src/common/fixed_point.h index 5aafa273b..f899b0d54 100644 --- a/src/common/fixed_point.h +++ b/src/common/fixed_point.h @@ -267,7 +267,7 @@ public: static constexpr base_type one = base_type(1) << fractional_bits; public: // constructors - FixedPoint() = default; + constexpr FixedPoint() = default; constexpr FixedPoint(const FixedPoint&) = default; constexpr FixedPoint& operator=(const FixedPoint&) = default; @@ -463,7 +463,7 @@ public: } public: - base_type data_; + base_type data_{}; }; // if we have the same fractional portion, but differing integer portions, we trivially upgrade the -- cgit v1.2.3