mirror of
https://github.com/gabime/spdlog.git
synced 2025-02-28 11:15:50 +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 {
|
class SPDLOG_API err_helper {
|
||||||
err_handler custom_err_handler_;
|
err_handler custom_err_handler_;
|
||||||
std::chrono::steady_clock::time_point last_report_time_;
|
std::chrono::steady_clock::time_point last_report_time_;
|
||||||
std::mutex mutex_;
|
mutable std::mutex mutex_;
|
||||||
public:
|
public:
|
||||||
err_helper() = default;
|
err_helper() = default;
|
||||||
|
~err_helper() = default;
|
||||||
err_helper(const err_helper& other);
|
err_helper(const err_helper& other);
|
||||||
err_helper(err_helper&& other) noexcept;
|
err_helper(err_helper&& other) noexcept;
|
||||||
void handle_ex(const std::string& origin, const source_loc& loc, const std::exception& ex) noexcept;
|
void handle_ex(const std::string& origin, const source_loc& loc, const std::exception& ex) noexcept;
|
||||||
|
@ -8,13 +8,16 @@
|
|||||||
namespace spdlog {
|
namespace spdlog {
|
||||||
namespace details {
|
namespace details {
|
||||||
|
|
||||||
err_helper::err_helper(const err_helper &other)
|
err_helper::err_helper(const err_helper &other) {
|
||||||
: custom_err_handler_(other.custom_err_handler_),
|
std::lock_guard lock(other.mutex_);
|
||||||
last_report_time_(other.last_report_time_) {}
|
custom_err_handler_ = other.custom_err_handler_;
|
||||||
|
last_report_time_ = other.last_report_time_;
|
||||||
|
}
|
||||||
|
|
||||||
err_helper::err_helper(err_helper &&other) noexcept
|
err_helper::err_helper(err_helper &&other) noexcept {
|
||||||
: custom_err_handler_(std::move(other.custom_err_handler_)),
|
custom_err_handler_ = std::move(other.custom_err_handler_);
|
||||||
last_report_time_(other.last_report_time_) {}
|
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
|
// 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.
|
// this point might indicate a problem with the logging system itself so we use fputs() directly.
|
||||||
|
Loading…
Reference in New Issue
Block a user