diff --git a/Source/Core/Core/State.cpp b/Source/Core/Core/State.cpp index 61b47a1198..eeb9b67924 100644 --- a/Source/Core/Core/State.cpp +++ b/Source/Core/Core/State.cpp @@ -265,16 +265,19 @@ static double GetSystemTimeAsDouble() static std::string SystemTimeAsDoubleToString(double time) { // revert adjustments from GetSystemTimeAsDouble() to get a normal Unix timestamp again - time_t seconds = (time_t)time + DOUBLE_TIME_OFFSET; - tm* localTime = localtime(&seconds); + time_t seconds = static_cast<time_t>(time) + DOUBLE_TIME_OFFSET; + errno = 0; + tm* local_time = localtime(&seconds); + if (errno != 0 || !local_time) + return ""; #ifdef _WIN32 wchar_t tmp[32] = {}; - wcsftime(tmp, std::size(tmp), L"%x %X", localTime); + wcsftime(tmp, std::size(tmp), L"%x %X", local_time); return WStringToUTF8(tmp); #else char tmp[32] = {}; - strftime(tmp, sizeof(tmp), "%x %X", localTime); + strftime(tmp, sizeof(tmp), "%x %X", local_time); return tmp; #endif }