diff --git a/thirdparty/nanodbc/nanodbc/nanodbc.cpp b/thirdparty/nanodbc/nanodbc/nanodbc.cpp index d99bed4f46..c62605aeb8 100644 --- a/thirdparty/nanodbc/nanodbc/nanodbc.cpp +++ b/thirdparty/nanodbc/nanodbc/nanodbc.cpp @@ -3252,11 +3252,17 @@ inline void result::result_impl::get_ref_impl(short column, T& result) const case SQL_C_DATE: { const date d = *ensure_pdata(column); - std::tm st = {0}; + std::tm st{}; st.tm_year = d.year - 1900; st.tm_mon = d.month - 1; st.tm_mday = d.day; - char* old_lc_time = std::setlocale(LC_TIME, nullptr); + std::string old_lc_time_container; + const char* old_lc_time = nullptr; + if (char* olc_lc_time_ptr = std::setlocale(LC_TIME, nullptr)) + { + old_lc_time_container = olc_lc_time_ptr; + old_lc_time = old_lc_time_container.c_str(); + } std::setlocale(LC_TIME, ""); char date_str[512]; std::strftime(date_str, sizeof(date_str), "%Y-%m-%d", &st); @@ -3264,15 +3270,20 @@ inline void result::result_impl::get_ref_impl(short column, T& result) const convert(date_str, result); return; } - case SQL_C_TIME: { const time t = *ensure_pdata