mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-24 14:49:42 -06:00
some cleanup, housekeeping for error cases and increased a few buffer sizes that are overflown by its content.
Thanks to Fatalis for the initial patch and pointing us to cppcheck. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5004 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
@ -481,6 +481,7 @@ bool DeleteDirRecursively(const char *directory)
|
||||
FindClose(hFind);
|
||||
#else
|
||||
}
|
||||
closedir(dirp);
|
||||
#endif
|
||||
File::DeleteDir(directory);
|
||||
|
||||
|
@ -49,18 +49,32 @@ SysConf::~SysConf()
|
||||
|
||||
bool SysConf::LoadFromFile(const char *filename)
|
||||
{
|
||||
// Basic check
|
||||
u64 size = File::GetSize(filename);
|
||||
if (size == 0)
|
||||
return false; //most likely: file does not exist
|
||||
if (size != SYSCONF_SIZE)
|
||||
{
|
||||
PanicAlert("Your SYSCONF file is the wrong size - should be 0x%04x (but is 0x%04x)",
|
||||
SYSCONF_SIZE, size);
|
||||
return false;
|
||||
}
|
||||
FILE* f = fopen(filename, "rb");
|
||||
|
||||
if (f == NULL)
|
||||
return false;
|
||||
|
||||
// Basic check
|
||||
if (File::GetSize(filename) != SYSCONF_SIZE)
|
||||
bool result = LoadFromFileInternal(f);
|
||||
if (result)
|
||||
{
|
||||
PanicAlert("Your SYSCONF file is the wrong size - should be 0x%04x", SYSCONF_SIZE);
|
||||
return false;
|
||||
// OK, done!
|
||||
m_Filename = filename;
|
||||
}
|
||||
fclose(f);
|
||||
return result;
|
||||
}
|
||||
|
||||
bool SysConf::LoadFromFileInternal(FILE *f)
|
||||
{
|
||||
// Fill in infos
|
||||
if (fread(&m_Header.version, sizeof(m_Header.version), 1, f) != 1) return false;
|
||||
if (fread(&m_Header.numEntries, sizeof(m_Header.numEntries), 1, f) != 1) return false;
|
||||
@ -123,9 +137,6 @@ bool SysConf::LoadFromFile(const char *filename)
|
||||
}
|
||||
}
|
||||
|
||||
// OK!, done!
|
||||
m_Filename = filename;
|
||||
fclose(f);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -71,7 +71,7 @@ public:
|
||||
|
||||
bool IsValid() { return m_IsValid; }
|
||||
|
||||
void Reload();
|
||||
void Reload();
|
||||
|
||||
template<class T>
|
||||
T GetData(const char* sectionName)
|
||||
@ -122,6 +122,8 @@ public:
|
||||
bool Save();
|
||||
bool SaveToFile(const char* filename);
|
||||
bool LoadFromFile(const char* filename);
|
||||
private:
|
||||
bool LoadFromFileInternal(FILE *f);
|
||||
};
|
||||
|
||||
#endif // __SYSCONF_MANAGER_h__
|
||||
|
Reference in New Issue
Block a user