소스 검색

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.
Lioncash 3 년 전
부모
커밋
6e1c6297a3
1개의 변경된 파일2개의 추가작업 그리고 2개의 파일을 삭제
  1. 2 2
      src/common/fixed_point.h

+ 2 - 2
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