mirror of
https://github.com/Lime3DS/Lime3DS
synced 2024-12-27 01:22:37 -06:00
soc_u: Prevent undefined behavior with CTRPollFD
This class is memcpy-ed and memcpy has the requirement that data passed to it must be trivially copyable, otherwise the behavior is undefined. This is trivial to resolve as BitField was made trivially copyable a while ago, so this explicit copy assignment operator isn't necessary.
This commit is contained in:
parent
2476532f21
commit
a32ad7f1f2
1 changed files with 3 additions and 5 deletions
|
@ -4,6 +4,7 @@
|
|||
|
||||
#include <algorithm>
|
||||
#include <cstring>
|
||||
#include <type_traits>
|
||||
#include <vector>
|
||||
#include "common/archives.h"
|
||||
#include "common/assert.h"
|
||||
|
@ -199,11 +200,6 @@ struct CTRPollFD {
|
|||
BitField<4, 1, u32> pollout;
|
||||
BitField<5, 1, u32> pollnval;
|
||||
|
||||
Events& operator=(const Events& other) {
|
||||
hex = other.hex;
|
||||
return *this;
|
||||
}
|
||||
|
||||
/// Translates the resulting events of a Poll operation from platform-specific to 3ds
|
||||
/// specific
|
||||
static Events TranslateTo3DS(u32 input_event) {
|
||||
|
@ -263,6 +259,8 @@ struct CTRPollFD {
|
|||
return result;
|
||||
}
|
||||
};
|
||||
static_assert(std::is_trivially_copyable_v<CTRPollFD>,
|
||||
"CTRPollFD is used with std::memcpy and must be trivially copyable");
|
||||
|
||||
/// Union to represent the 3ds' sockaddr structure
|
||||
union CTRSockAddr {
|
||||
|
|
Loading…
Reference in a new issue