Fix -Wclass-memaccess warnings

We want to clear/memset the padding bytes, not just each member,
so using assignment or {} initialization is not an option.

To silence the warnings, cast the object pointer to u8* (which is not
undefined behavior) to make it explicit to the compiler that we want
to fill the object representation.
This commit is contained in:
Léo Lam 2020-12-16 15:01:20 +01:00
parent 5a5c22dc6c
commit eafe005672
No known key found for this signature in database
GPG Key ID: 0DF30F9081000741
5 changed files with 8 additions and 8 deletions

View File

@ -931,7 +931,7 @@ GCMemcardRemoveFileRetVal GCMemcard::RemoveFile(u8 index) // index in the direc
// here that has an empty file with the filename "Broken File000" where the actual deleted file
// was. Determine when exactly this happens and if this is neccessary for anything.
memset(&(UpdatedDir.m_dir_entries[index]), 0xFF, DENTRY_SIZE);
memset(reinterpret_cast<u8*>(&UpdatedDir.m_dir_entries[index]), 0xFF, DENTRY_SIZE);
UpdatedDir.m_update_counter = UpdatedDir.m_update_counter + 1;
UpdateDirectory(UpdatedDir);
@ -1623,7 +1623,7 @@ std::pair<u32, u32> Header::CalculateSerial() const
DEntry::DEntry()
{
memset(this, 0xFF, DENTRY_SIZE);
memset(reinterpret_cast<u8*>(this), 0xFF, DENTRY_SIZE);
}
std::string DEntry::GCI_FileName() const
@ -1678,7 +1678,7 @@ GCMemcardErrorCode Header::CheckForErrors(u16 card_size_mbits) const
Directory::Directory()
{
memset(this, 0xFF, BLOCK_SIZE);
memset(reinterpret_cast<u8*>(this), 0xFF, BLOCK_SIZE);
m_update_counter = 0;
m_checksum = Common::swap16(0xF003);
m_checksum_inv = 0;

View File

@ -25,7 +25,7 @@ void SetupUnit::Init(u8 primitiveType)
OutputVertexData* SetupUnit::GetVertex()
{
memset(m_VertWritePointer, 0, sizeof(*m_VertWritePointer));
memset(reinterpret_cast<u8*>(m_VertWritePointer), 0, sizeof(*m_VertWritePointer));
return m_VertWritePointer;
}

View File

@ -43,7 +43,7 @@ static const float s_gammaLUT[] = {1.0f, 1.7f, 2.2f, 1.0f};
void BPInit()
{
memset(&bpmem, 0, sizeof(bpmem));
memset(reinterpret_cast<u8*>(&bpmem), 0, sizeof(bpmem));
bpmem.bpMask = 0xFFFFFF;
}

View File

@ -188,7 +188,7 @@ template <typename SerializedUidType, typename UidType>
static void SerializePipelineUid(const UidType& uid, SerializedUidType& serialized_uid)
{
// Convert to disk format. Ensure all padding bytes are zero.
std::memset(&serialized_uid, 0, sizeof(serialized_uid));
std::memset(reinterpret_cast<u8*>(&serialized_uid), 0, sizeof(serialized_uid));
serialized_uid.vertex_decl = uid.vertex_format->GetVertexDeclaration();
serialized_uid.vs_uid = uid.vs_uid;
serialized_uid.gs_uid = uid.gs_uid;

View File

@ -295,8 +295,8 @@ void VideoBackendBase::DoState(PointerWrap& p)
void VideoBackendBase::InitializeShared()
{
memset(&g_main_cp_state, 0, sizeof(g_main_cp_state));
memset(&g_preprocess_cp_state, 0, sizeof(g_preprocess_cp_state));
memset(reinterpret_cast<u8*>(&g_main_cp_state), 0, sizeof(g_main_cp_state));
memset(reinterpret_cast<u8*>(&g_preprocess_cp_state), 0, sizeof(g_preprocess_cp_state));
memset(texMem, 0, TMEM_SIZE);
// do not initialize again for the config window