Skip to content

Commit

Permalink
Do not pass a pointer to an temporary IReader in CInifile
Browse files Browse the repository at this point in the history
Address of an rvalue may not be taken.
  • Loading branch information
Zegeri committed Sep 24, 2018
1 parent 960761c commit 373d997
Show file tree
Hide file tree
Showing 5 changed files with 12 additions and 10 deletions.
4 changes: 2 additions & 2 deletions src/xrGame/GameObject.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -491,8 +491,8 @@ BOOL CGameObject::net_Spawn(CSE_Abstract* DC)
{
#pragma warning(push)
#pragma warning(disable : 4238)
m_ini_file = new CInifile(
&IReader((void*)(*(O->m_ini_string)), O->m_ini_string.size()), FS.get_path("$game_config$")->m_Path);
IReader reader((void*)(*(O->m_ini_string)), O->m_ini_string.size());
m_ini_file = new CInifile(&reader, FS.get_path("$game_config$")->m_Path);
#pragma warning(pop)
}

Expand Down
3 changes: 2 additions & 1 deletion src/xrGame/alife_object.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ void CSE_ALifeObject::spawn_supplies(LPCSTR ini_string)

#pragma warning(push)
#pragma warning(disable : 4238)
CInifile ini(&IReader((void*)ini_string, xr_strlen(ini_string)), FS.get_path("$game_config$")->m_Path);
IReader reader((void*)ini_string, xr_strlen(ini_string));
CInifile ini(&reader, FS.get_path("$game_config$")->m_Path);
#pragma warning(pop)

// Alundaio: This will spawn a single random section listed in [spawn_loadout]
Expand Down
4 changes: 2 additions & 2 deletions src/xrGame/alife_trader_abstract.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@ void CSE_ALifeTraderAbstract::spawn_supplies()
{
#pragma warning(push)
#pragma warning(disable : 4238)
CInifile ini(&IReader((void*)(*dynamic_object->m_ini_string), xr_strlen(dynamic_object->m_ini_string)),
FS.get_path("$game_config$")->m_Path);
IReader reader((void*)(*dynamic_object->m_ini_string), xr_strlen(dynamic_object->m_ini_string));
CInifile ini(&reader, FS.get_path("$game_config$")->m_Path);
#pragma warning(pop)

if (ini.section_exist("dont_spawn_character_supplies"))
Expand Down
4 changes: 2 additions & 2 deletions src/xrServerEntities/script_ini_file_script.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,8 @@ bool r_line(CScriptIniFile* self, LPCSTR S, int L, luabind::string& N, luabind::
#pragma warning(disable : 4238)
CScriptIniFile* create_ini_file(LPCSTR ini_string)
{
return ((CScriptIniFile*)new CInifile(
&IReader((void*)ini_string, xr_strlen(ini_string)), FS.get_path("$game_config$")->m_Path));
IReader reader((void*)ini_string, xr_strlen(ini_string));
return ((CScriptIniFile*)new CInifile(&reader, FS.get_path("$game_config$")->m_Path));
}
#pragma warning(pop)

Expand Down
7 changes: 4 additions & 3 deletions src/xrServerEntities/xrServer_Object_Base.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -157,13 +157,14 @@ IServerEntityShape* CSE_Abstract::shape() { return (nullptr); }
CSE_Motion* CSE_Abstract::motion() { return (nullptr); }
CInifile& CSE_Abstract::spawn_ini()
{
if (!m_ini_file)
if (!m_ini_file) {
#pragma warning(push)
#pragma warning(disable : 4238)
// XXX: what a casting mess.. Do we need to use shared_str for m_ini_string?
m_ini_file =
new CInifile(&IReader((void*)(*(m_ini_string)), m_ini_string.size()), FS.get_path(_game_config_)->m_Path);
IReader reader((void*)(*(m_ini_string)), m_ini_string.size());
m_ini_file = new CInifile(&reader, FS.get_path(_game_config_)->m_Path);
#pragma warning(pop)
}
return (*m_ini_file);
}

Expand Down

0 comments on commit 373d997

Please sign in to comment.