mirror of
https://github.com/ddnet/ddnet.git
synced 2024-09-20 09:34:19 +00:00
Fix aliasing warnings in CGameContext::OnMapChange
Fix warnings with `-fstrict-aliasing` and `-Wstrict-aliasing=2` by not casting the map reader data to `int *`: ``` src/game/server/gamecontext.cpp: In member function 'virtual void CGameContext::OnMapChange(char*, int)': src/game/server/gamecontext.cpp:3623:56: warning: dereferencing type-punned pointer might break strict-aliasing rules [-Wstrict-aliasing] 3623 | pData = (int *)&MapInfo; | ^~~~~~~~ src/game/server/gamecontext.cpp:3631:48: warning: dereferencing type-punned pointer might break strict-aliasing rules [-Wstrict-aliasing] 3631 | pData = (int *)&MapInfo; | ^~~~~~~~ ``` As the map reader data is return as `void *` and never used as `int *`, the redundant cast is removed to fix the warnings. Also improve readability by moving `pInfo` variable declaration.
This commit is contained in:
parent
79df5893ff
commit
ea06a13429
|
@ -3594,15 +3594,15 @@ void CGameContext::OnMapChange(char *pNewMapName, int MapNameSize)
|
||||||
{
|
{
|
||||||
int TypeID;
|
int TypeID;
|
||||||
int ItemID;
|
int ItemID;
|
||||||
int *pData = (int *)Reader.GetItem(i, &TypeID, &ItemID);
|
void *pData = Reader.GetItem(i, &TypeID, &ItemID);
|
||||||
int Size = Reader.GetItemSize(i);
|
int Size = Reader.GetItemSize(i);
|
||||||
CMapItemInfoSettings MapInfo;
|
CMapItemInfoSettings MapInfo;
|
||||||
if(TypeID == MAPITEMTYPE_INFO && ItemID == 0)
|
if(TypeID == MAPITEMTYPE_INFO && ItemID == 0)
|
||||||
{
|
{
|
||||||
FoundInfo = true;
|
FoundInfo = true;
|
||||||
CMapItemInfoSettings *pInfo = (CMapItemInfoSettings *)pData;
|
|
||||||
if(Size >= (int)sizeof(CMapItemInfoSettings))
|
if(Size >= (int)sizeof(CMapItemInfoSettings))
|
||||||
{
|
{
|
||||||
|
CMapItemInfoSettings *pInfo = (CMapItemInfoSettings *)pData;
|
||||||
if(pInfo->m_Settings > -1)
|
if(pInfo->m_Settings > -1)
|
||||||
{
|
{
|
||||||
SettingsIndex = pInfo->m_Settings;
|
SettingsIndex = pInfo->m_Settings;
|
||||||
|
@ -3620,15 +3620,15 @@ void CGameContext::OnMapChange(char *pNewMapName, int MapNameSize)
|
||||||
{
|
{
|
||||||
MapInfo = *pInfo;
|
MapInfo = *pInfo;
|
||||||
MapInfo.m_Settings = SettingsIndex;
|
MapInfo.m_Settings = SettingsIndex;
|
||||||
pData = (int *)&MapInfo;
|
pData = &MapInfo;
|
||||||
Size = sizeof(MapInfo);
|
Size = sizeof(MapInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
*(CMapItemInfo *)&MapInfo = *(CMapItemInfo *)pInfo;
|
*(CMapItemInfo *)&MapInfo = *(CMapItemInfo *)pData;
|
||||||
MapInfo.m_Settings = SettingsIndex;
|
MapInfo.m_Settings = SettingsIndex;
|
||||||
pData = (int *)&MapInfo;
|
pData = &MapInfo;
|
||||||
Size = sizeof(MapInfo);
|
Size = sizeof(MapInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue