From c212fc9b2c6a389dfe7ea59bc66c745397c349fd Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 14 May 2019 08:41:51 -0400 Subject: video_core/engines/maxwell_3d: Add is_trivially_copyable_v check for Regs std::memset is used to clear the entire register structure, which requires that the Regs struct be trivially copyable (otherwise undefined behavior is invoked). This prevents the case where a non-trivial type is potentially added to the struct. --- src/video_core/engines/maxwell_3d.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/video_core/engines/maxwell_3d.h b/src/video_core/engines/maxwell_3d.h index 4883b582a..48e4fec33 100644 --- a/src/video_core/engines/maxwell_3d.h +++ b/src/video_core/engines/maxwell_3d.h @@ -6,6 +6,7 @@ #include #include +#include #include #include @@ -1107,6 +1108,7 @@ public: } regs{}; static_assert(sizeof(Regs) == Regs::NUM_REGS * sizeof(u32), "Maxwell3D Regs has wrong size"); + static_assert(std::is_trivially_copyable_v, "Maxwell3D Regs must be trivially copyable"); struct State { struct ConstBufferInfo { -- cgit v1.2.3