mirror of
https://github.com/gabime/spdlog.git
synced 2025-02-28 03:05:49 +08:00
Fixed copy ctor of err_helper to be thread safe
This commit is contained in:
parent
62bbd87bdb
commit
80f00797e3
@ -15,9 +15,10 @@ namespace details {
|
||||
class SPDLOG_API err_helper {
|
||||
err_handler custom_err_handler_;
|
||||
std::chrono::steady_clock::time_point last_report_time_;
|
||||
std::mutex mutex_;
|
||||
mutable std::mutex mutex_;
|
||||
public:
|
||||
err_helper() = default;
|
||||
~err_helper() = default;
|
||||
err_helper(const err_helper& other);
|
||||
err_helper(err_helper&& other) noexcept;
|
||||
void handle_ex(const std::string& origin, const source_loc& loc, const std::exception& ex) noexcept;
|
||||
|
@ -8,13 +8,16 @@
|
||||
namespace spdlog {
|
||||
namespace details {
|
||||
|
||||
err_helper::err_helper(const err_helper &other)
|
||||
: custom_err_handler_(other.custom_err_handler_),
|
||||
last_report_time_(other.last_report_time_) {}
|
||||
err_helper::err_helper(const err_helper &other) {
|
||||
std::lock_guard lock(other.mutex_);
|
||||
custom_err_handler_ = other.custom_err_handler_;
|
||||
last_report_time_ = other.last_report_time_;
|
||||
}
|
||||
|
||||
err_helper::err_helper(err_helper &&other) noexcept
|
||||
: custom_err_handler_(std::move(other.custom_err_handler_)),
|
||||
last_report_time_(other.last_report_time_) {}
|
||||
err_helper::err_helper(err_helper &&other) noexcept {
|
||||
custom_err_handler_ = std::move(other.custom_err_handler_);
|
||||
last_report_time_ = std::move(other.last_report_time_);
|
||||
}
|
||||
|
||||
// Prints error to stderr with source location (if available). A stderr sink is not used because reaching
|
||||
// this point might indicate a problem with the logging system itself so we use fputs() directly.
|
||||
|
Loading…
Reference in New Issue
Block a user