123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- diff --git a/include/spdlog/common-inl.h b/include/spdlog/common-inl.h
- index 378efe60..3632ec94 100644
- --- a/include/spdlog/common-inl.h
- +++ b/include/spdlog/common-inl.h
- @@ -60,7 +60,7 @@ SPDLOG_INLINE spdlog_ex::spdlog_ex(std::string msg)
- SPDLOG_INLINE spdlog_ex::spdlog_ex(const std::string &msg, int last_errno)
- {
- memory_buf_t outbuf;
- - fmt::format_system_error(outbuf, last_errno, msg);
- + fmt::format_system_error(outbuf, last_errno, msg.c_str());
- msg_ = fmt::to_string(outbuf);
- }
-
- diff --git a/src/fmt.cpp b/src/fmt.cpp
- index 9e91beb1..edd52dd5 100644
- --- a/src/fmt.cpp
- +++ b/src/fmt.cpp
- @@ -10,94 +10,58 @@
- #include <spdlog/fmt/bundled/format-inl.h>
-
-
- +
- FMT_BEGIN_NAMESPACE
- namespace detail {
-
- -template <typename T>
- -int format_float(char* buf, std::size_t size, const char* format, int precision,
- - T value) {
- -#ifdef FMT_FUZZ
- - if (precision > 100000)
- - throw std::runtime_error(
- - "fuzz mode - avoid large allocation inside snprintf");
- -#endif
- - // Suppress the warning about nonliteral format string.
- - int (*snprintf_ptr)(char*, size_t, const char*, ...) = FMT_SNPRINTF;
- - return precision < 0 ? snprintf_ptr(buf, size, format, value)
- - : snprintf_ptr(buf, size, format, precision, value);
- +template<typename T>
- +int format_float(char *buf, std::size_t size, const char *format, int precision, T value)
- +{
- +# ifdef FMT_FUZZ
- + if (precision > 100000)
- + throw std::runtime_error("fuzz mode - avoid large allocation inside snprintf");
- +# endif
- + // Suppress the warning about nonliteral format string.
- + int (*snprintf_ptr)(char *, size_t, const char *, ...) = FMT_SNPRINTF;
- + return precision < 0 ? snprintf_ptr(buf, size, format, value) : snprintf_ptr(buf, size, format, precision, value);
- }
-
- -template FMT_API dragonbox::decimal_fp<float> dragonbox::to_decimal(float x)
- - FMT_NOEXCEPT;
- -template FMT_API dragonbox::decimal_fp<double> dragonbox::to_decimal(double x)
- - FMT_NOEXCEPT;
- -
- -// DEPRECATED! This function exists for ABI compatibility.
- -template <typename Char>
- -typename basic_format_context<std::back_insert_iterator<buffer<Char>>,
- - Char>::iterator
- -vformat_to(buffer<Char>& buf, basic_string_view<Char> format_str,
- - basic_format_args<basic_format_context<
- - std::back_insert_iterator<buffer<type_identity_t<Char>>>,
- - type_identity_t<Char>>>
- - args) {
- - using iterator = std::back_insert_iterator<buffer<char>>;
- - using context = basic_format_context<
- - std::back_insert_iterator<buffer<type_identity_t<Char>>>,
- - type_identity_t<Char>>;
- - auto out = iterator(buf);
- - format_handler<iterator, Char, context> h(out, format_str, args, {});
- - parse_format_string<false>(format_str, h);
- - return out;
- -}
- -template basic_format_context<std::back_insert_iterator<buffer<char>>,
- - char>::iterator
- -vformat_to(buffer<char>&, string_view,
- - basic_format_args<basic_format_context<
- - std::back_insert_iterator<buffer<type_identity_t<char>>>,
- - type_identity_t<char>>>);
- -} // namespace detail
- -
- -template struct FMT_INSTANTIATION_DEF_API detail::basic_data<void>;
- +template FMT_API dragonbox::decimal_fp<float> dragonbox::to_decimal(float x) FMT_NOEXCEPT;
- +template FMT_API dragonbox::decimal_fp<double> dragonbox::to_decimal(double x) FMT_NOEXCEPT;
- +} // namespace detail
-
- // Workaround a bug in MSVC2013 that prevents instantiation of format_float.
- -int (*instantiate_format_float)(double, int, detail::float_specs,
- - detail::buffer<char>&) = detail::format_float;
- +int (*instantiate_format_float)(double, int, detail::float_specs, detail::buffer<char> &) = detail::format_float;
-
- -#ifndef FMT_STATIC_THOUSANDS_SEPARATOR
- -template FMT_API detail::locale_ref::locale_ref(const std::locale& loc);
- +# ifndef FMT_STATIC_THOUSANDS_SEPARATOR
- +template FMT_API detail::locale_ref::locale_ref(const std::locale &loc);
- template FMT_API std::locale detail::locale_ref::get<std::locale>() const;
- -#endif
- +# endif
-
- // Explicit instantiations for char.
-
- -template FMT_API std::string detail::grouping_impl<char>(locale_ref);
- -template FMT_API char detail::thousands_sep_impl(locale_ref);
- +template FMT_API auto detail::thousands_sep_impl(locale_ref) -> thousands_sep_result<char>;
- template FMT_API char detail::decimal_point_impl(locale_ref);
-
- -template FMT_API void detail::buffer<char>::append(const char*, const char*);
- +template FMT_API void detail::buffer<char>::append(const char *, const char *);
-
- template FMT_API void detail::vformat_to(
- - detail::buffer<char>&, string_view,
- - basic_format_args<FMT_BUFFER_CONTEXT(char)>, detail::locale_ref);
- -
- -template FMT_API int detail::snprintf_float(double, int, detail::float_specs,
- - detail::buffer<char>&);
- -template FMT_API int detail::snprintf_float(long double, int,
- - detail::float_specs,
- - detail::buffer<char>&);
- -template FMT_API int detail::format_float(double, int, detail::float_specs,
- - detail::buffer<char>&);
- -template FMT_API int detail::format_float(long double, int, detail::float_specs,
- - detail::buffer<char>&);
- + detail::buffer<char> &, string_view, basic_format_args<FMT_BUFFER_CONTEXT(char)>, detail::locale_ref);
- +
- +template FMT_API int detail::snprintf_float(double, int, detail::float_specs, detail::buffer<char> &);
- +template FMT_API int detail::snprintf_float(long double, int, detail::float_specs, detail::buffer<char> &);
- +template FMT_API int detail::format_float(double, int, detail::float_specs, detail::buffer<char> &);
- +template FMT_API int detail::format_float(long double, int, detail::float_specs, detail::buffer<char> &);
-
- // Explicit instantiations for wchar_t.
-
- -template FMT_API std::string detail::grouping_impl<wchar_t>(locale_ref);
- -template FMT_API wchar_t detail::thousands_sep_impl(locale_ref);
- +template FMT_API auto detail::thousands_sep_impl(locale_ref) -> thousands_sep_result<wchar_t>;
- template FMT_API wchar_t detail::decimal_point_impl(locale_ref);
-
- -template FMT_API void detail::buffer<wchar_t>::append(const wchar_t*,
- - const wchar_t*);
- +template FMT_API void detail::buffer<wchar_t>::append(const wchar_t *, const wchar_t *);
- +
- +template struct detail::basic_data<void>;
- +
- FMT_END_NAMESPACE
- +
- #endif // !SPDLOG_FMT_EXTERNAL
|