Merge pull request #6074 from delroth/netplay-fix

Fix NetPlay settings reset issue
This commit is contained in:
Pierre Bourdon 2017-09-18 06:15:31 +02:00 committed by GitHub
commit 1566f3ae7e
2 changed files with 16 additions and 13 deletions

View File

@ -226,25 +226,27 @@ std::string StripQuotes(const std::string& s)
return s;
}
bool TryParse(const std::string& str, u16* const output)
{
u64 value;
if (!TryParse(str, &value))
return false;
if (value >= 0x10000ull && value <= 0xFFFFFFFFFFFF0000ull)
return false;
*output = static_cast<u16>(value);
return true;
}
bool TryParse(const std::string& str, u32* const output)
{
char* endptr = nullptr;
// Reset errno to a value other than ERANGE
errno = 0;
unsigned long value = strtoul(str.c_str(), &endptr, 0);
if (!endptr || *endptr)
u64 value;
if (!TryParse(str, &value))
return false;
if (errno == ERANGE)
return false;
#if ULONG_MAX > UINT_MAX
if (value >= 0x100000000ull && value <= 0xFFFFFFFF00000000ull)
return false;
#endif
*output = static_cast<u32>(value);
return true;

View File

@ -59,6 +59,7 @@ std::string ThousandSeparate(I value, int spaces = 0)
std::string StringFromBool(bool value);
bool TryParse(const std::string& str, bool* output);
bool TryParse(const std::string& str, u16* output);
bool TryParse(const std::string& str, u32* output);
bool TryParse(const std::string& str, u64* output);