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>
static std::shared_ptr<spdlog::logger> create(std::string logger_name, SinkArgs &&... args)
{
auto sink = std::make_shared<Sink>(std::forward<SinkArgs>(args)...);
auto new_logger = std::make_shared<spdlog::logger>(std::move(logger_name), std::move(sink));
std::shared_ptr<spdlog::logger> NewLogger;
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);
return new_logger;
return NewLogger;
}
};
} // namespace spdlog

Loading…
Cancel
Save