Make QuicFrame a standard-layout struct.
C++ provides certain guarantees about the way union fields interact, which are only valid for standard-layout types. Standard-layout types are not allowed to have data members in both base and derived types; this fixes that by moving QuicInlinedFrame::type into individual frames.
Also, before C++17, using offsetof() on non-standard-layout types is undefined behavor.
Thanks to Stephan Hartmann <email@example.com> for pointing this problem out in <https://quiche-review.googlesource.com/c/quiche/+/10600>.
10 files changed