Exceptions for std::make_shared

I would like a way to actually know without abort that logger failed to allocate for whatever reason
pull/2224/head
Andrzej Serazetdinow 4 years ago committed by GitHub
parent cc30229abb
commit 782e716ea6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -15,10 +15,27 @@ struct synchronous_factory
template<typename Sink, typename... SinkArgs> template<typename Sink, typename... SinkArgs>
static std::shared_ptr<spdlog::logger> create(std::string logger_name, SinkArgs &&... args) static std::shared_ptr<spdlog::logger> create(std::string logger_name, SinkArgs &&... args)
{ {
auto sink = std::make_shared<Sink>(std::forward<SinkArgs>(args)...); std::shared_ptr<spdlog::logger> NewLogger;
auto new_logger = std::make_shared<spdlog::logger>(std::move(logger_name), std::move(sink)); try
{
auto sink = std::make_shared<Sink>(std::forward<SinkArgs>(args)...);
}
catch(std::bad_alloc& exc)
{
return NewLogger;
}
try
{
auto new_logger = std::make_shared<spdlog::logger>(std::move(logger_name), std::move(sink));
}
catch(std::bad_alloc& exc)
{
return NewLogger;
}
details::registry::instance().initialize_logger(new_logger); details::registry::instance().initialize_logger(new_logger);
return new_logger; return NewLogger;
} }
}; };
} // namespace spdlog } // namespace spdlog

Loading…
Cancel
Save