diff --git a/.cspell/words.txt b/.cspell/words.txt index fdf4d055..b0d535f2 100644 --- a/.cspell/words.txt +++ b/.cspell/words.txt @@ -1,4 +1,5 @@ _lseeki64 +_mkgmtime _sh_denyno _sh_denyrd _sh_denyrw diff --git a/repertory/librepertory/src/providers/s3/s3_provider.cpp b/repertory/librepertory/src/providers/s3/s3_provider.cpp index b68be7e8..c1d5aade 100644 --- a/repertory/librepertory/src/providers/s3/s3_provider.cpp +++ b/repertory/librepertory/src/providers/s3/s3_provider.cpp @@ -64,7 +64,7 @@ auto s3_provider::convert_api_date(std::string_view date) -> std::uint64_t { auto date_parts = utils::string::split(date, '.', true); auto date_time = date_parts.at(0U); auto nanos = - (date_parts.size() == 1U) + (date_parts.size() <= 1U) ? 0U : utils::string::to_uint64( utils::string::split(date_parts.at(1U), 'Z', true).at(0U)) * @@ -73,7 +73,7 @@ auto s3_provider::convert_api_date(std::string_view date) -> std::uint64_t { struct tm tm1 {}; #if defined(_WIN32) utils::time::strptime(date_time.c_str(), "%Y-%m-%dT%T", &tm1); - return nanos + utils::time::windows_time_t_to_unix_time(mktime(&tm1)); + return nanos + utils::time::windows_time_t_to_unix_time(_mkgmtime(&tm1)); #else // !defined(_WIN32) strptime(date_time.c_str(), "%Y-%m-%dT%T", &tm1); return nanos + (static_cast(mktime(&tm1)) *