From 268222e496d32e3c6f450f7242655cf014dc93e8 Mon Sep 17 00:00:00 2001 From: gabime Date: Sat, 19 Aug 2017 15:36:34 +0300 Subject: [PATCH] Fixed crash in async logger in gcc 4.8.5 regarding static members in pattern_formatter impl --- .../spdlog/details/pattern_formatter_impl.h | 49 +++++-------------- 1 file changed, 12 insertions(+), 37 deletions(-) diff --git a/include/spdlog/details/pattern_formatter_impl.h b/include/spdlog/details/pattern_formatter_impl.h index c1ce7191..bd2ebc71 100644 --- a/include/spdlog/details/pattern_formatter_impl.h +++ b/include/spdlog/details/pattern_formatter_impl.h @@ -79,67 +79,42 @@ static int to12h(const tm& t) } //Abbreviated weekday name -using days_array = std::array; -static const days_array& days() -{ - static const days_array arr{ { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" } }; - return arr; -} +static const std::string days[] { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }; class a_formatter:public flag_formatter { void format(details::log_msg& msg, const std::tm& tm_time) override { - msg.formatted << days()[tm_time.tm_wday]; - } -}; -// message counter formatter -class i_formatter SPDLOG_FINAL:public flag_formatter -{ - void format(details::log_msg& msg, const std::tm&) override - { - msg.formatted << '#' << msg.msg_id; + msg.formatted << days[tm_time.tm_wday]; } }; + //Full weekday name -static const days_array& full_days() -{ - static const days_array arr{ { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" } }; - return arr; -} -class A_formatter SPDLOG_FINAL :public flag_formatter +static const std::string full_days[] { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }; +class A_formatter:public flag_formatter { void format(details::log_msg& msg, const std::tm& tm_time) override { - msg.formatted << full_days()[tm_time.tm_wday]; + msg.formatted << full_days[tm_time.tm_wday]; } }; //Abbreviated month -using months_array = std::array; -static const months_array& months() -{ - static const months_array arr{ { "Jan", "Feb", "Mar", "Apr", "May", "June", "July", "Aug", "Sept", "Oct", "Nov", "Dec" } }; - return arr; -} +static const std::string months[] { "Jan", "Feb", "Mar", "Apr", "May", "June", "July", "Aug", "Sept", "Oct", "Nov", "Dec" }; class b_formatter:public flag_formatter { void format(details::log_msg& msg, const std::tm& tm_time) override { - msg.formatted << months()[tm_time.tm_mon]; + msg.formatted << months[tm_time.tm_mon]; } }; //Full month name -static const months_array& full_months() -{ - static const months_array arr{ { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" } }; - return arr; -} -class B_formatter SPDLOG_FINAL :public flag_formatter +static const std::string full_months[] { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; +class B_formatter:public flag_formatter { void format(details::log_msg& msg, const std::tm& tm_time) override { - msg.formatted << full_months()[tm_time.tm_mon]; + msg.formatted << full_months[tm_time.tm_mon]; } }; @@ -164,7 +139,7 @@ class c_formatter SPDLOG_FINAL:public flag_formatter { void format(details::log_msg& msg, const std::tm& tm_time) override { - msg.formatted << days()[tm_time.tm_wday] << ' ' << months()[tm_time.tm_mon] << ' ' << tm_time.tm_mday << ' '; + msg.formatted << days[tm_time.tm_wday] << ' ' << months[tm_time.tm_mon] << ' ' << tm_time.tm_mday << ' '; pad_n_join(msg.formatted, tm_time.tm_hour, tm_time.tm_min, tm_time.tm_sec, ':') << ' ' << tm_time.tm_year + 1900; } };