mirror of
https://github.com/KjellKod/g3log.git
synced 2025-01-06 00:31:12 +01:00
Fix found by PVS-Studio issues (#490)
Small changes, essentially cleanup, with no actual code logic change. * Ensure symbol_buffer aligned same as SYMBOL_INFO * Use constexpr for compile-time constant * Use = default for ctor bodies to allow compiler optimize them * Pass string by reference to prevent copying, other smaller types we can avoid passing by reference as the type is cheaper to copy.
This commit is contained in:
parent
cc0fb7c1ea
commit
bad9c58e60
@ -92,7 +92,7 @@ namespace g3 {
|
|||||||
ss_change.str("");
|
ss_change.str("");
|
||||||
|
|
||||||
std::string old_log = _log_file_with_path;
|
std::string old_log = _log_file_with_path;
|
||||||
_log_file_with_path = prospect_log;
|
_log_file_with_path = std::move(prospect_log);
|
||||||
_outptr = std::move(log_stream);
|
_outptr = std::move(log_stream);
|
||||||
ss_change << "\n\tNew log file. The previous log file was at: ";
|
ss_change << "\n\tNew log file. The previous log file was at: ";
|
||||||
ss_change << old_log << "\n";
|
ss_change << old_log << "\n";
|
||||||
|
@ -51,7 +51,7 @@ namespace g3 {
|
|||||||
return prefix;
|
return prefix;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string pathSanityFix(std::string path, std::string file_name) {
|
std::string pathSanityFix(std::string path, const std::string &file_name) {
|
||||||
// Unify the delimeters,. maybe sketchy solution but it seems to work
|
// Unify the delimeters,. maybe sketchy solution but it seems to work
|
||||||
// on at least win7 + ubuntu. All bets are off for older windows
|
// on at least win7 + ubuntu. All bets are off for older windows
|
||||||
std::replace(path.begin(), path.end(), '\\', '/');
|
std::replace(path.begin(), path.end(), '\\', '/');
|
||||||
@ -88,7 +88,7 @@ namespace g3 {
|
|||||||
std::string createLogFileName(const std::string &verified_prefix, const std::string &logger_id) {
|
std::string createLogFileName(const std::string &verified_prefix, const std::string &logger_id) {
|
||||||
std::stringstream oss_name;
|
std::stringstream oss_name;
|
||||||
oss_name << verified_prefix << ".";
|
oss_name << verified_prefix << ".";
|
||||||
if( logger_id != "" ) {
|
if( !logger_id.empty() ) {
|
||||||
oss_name << logger_id << ".";
|
oss_name << logger_id << ".";
|
||||||
}
|
}
|
||||||
auto now = std::chrono::system_clock::now();
|
auto now = std::chrono::system_clock::now();
|
||||||
|
@ -18,7 +18,7 @@ namespace g3 {
|
|||||||
std::atomic<bool> value_;
|
std::atomic<bool> value_;
|
||||||
public:
|
public:
|
||||||
atomicbool(): value_ {false} {}
|
atomicbool(): value_ {false} {}
|
||||||
atomicbool(const bool& value): value_ {value} {}
|
atomicbool(bool value): value_ {value} {}
|
||||||
atomicbool(const std::atomic<bool>& value) : value_ {value.load(std::memory_order_acquire)} {}
|
atomicbool(const std::atomic<bool>& value) : value_ {value.load(std::memory_order_acquire)} {}
|
||||||
atomicbool(const atomicbool& other): value_ {other.value_.load(std::memory_order_acquire)} {}
|
atomicbool(const atomicbool& other): value_ {other.value_.load(std::memory_order_acquire)} {}
|
||||||
|
|
||||||
@ -32,9 +32,9 @@ namespace g3 {
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool operator==(const atomicbool& rhs) const {
|
bool operator==(const atomicbool& rhs) const {
|
||||||
return (value_.load(std::memory_order_acquire) == rhs.value_.load(std::memory_order_acquire));
|
return (value_.load(std::memory_order_acquire) == rhs.value_.load(std::memory_order_acquire));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool value() {return value_.load(std::memory_order_acquire);}
|
bool value() {return value_.load(std::memory_order_acquire);}
|
||||||
std::atomic<bool>& get() {return value_;}
|
std::atomic<bool>& get() {return value_;}
|
||||||
|
@ -67,8 +67,8 @@ namespace g3 {
|
|||||||
|
|
||||||
std::string threadID() const;
|
std::string threadID() const;
|
||||||
|
|
||||||
void setExpression(const std::string expression) {
|
void setExpression(std::string expression) {
|
||||||
_expression = expression;
|
_expression = std::move(expression);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -149,6 +149,7 @@ namespace g3 {
|
|||||||
struct FatalMessage : public LogMessage {
|
struct FatalMessage : public LogMessage {
|
||||||
FatalMessage(const LogMessage& details, g3::SignalType signal_id);
|
FatalMessage(const LogMessage& details, g3::SignalType signal_id);
|
||||||
FatalMessage(const FatalMessage&);
|
FatalMessage(const FatalMessage&);
|
||||||
|
FatalMessage& operator=(const FatalMessage&) = delete;
|
||||||
virtual ~FatalMessage() {}
|
virtual ~FatalMessage() {}
|
||||||
|
|
||||||
LogMessage copyToLogMessage() const;
|
LogMessage copyToLogMessage() const;
|
||||||
|
@ -34,7 +34,7 @@ class shared_queue
|
|||||||
shared_queue(const shared_queue &other) = delete;
|
shared_queue(const shared_queue &other) = delete;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
shared_queue() {}
|
shared_queue() = default;
|
||||||
|
|
||||||
void push(T item) {
|
void push(T item) {
|
||||||
{
|
{
|
||||||
|
@ -30,7 +30,7 @@ namespace g3 {
|
|||||||
SinkHandle(std::shared_ptr<internal::Sink<T>> sink)
|
SinkHandle(std::shared_ptr<internal::Sink<T>> sink)
|
||||||
: _sink(sink) {}
|
: _sink(sink) {}
|
||||||
|
|
||||||
~SinkHandle() {}
|
~SinkHandle() = default;
|
||||||
|
|
||||||
|
|
||||||
// Asynchronous call to the real sink. If the real sink is already deleted
|
// Asynchronous call to the real sink. If the real sink is already deleted
|
||||||
|
@ -49,7 +49,7 @@ namespace g3 {
|
|||||||
/** return time representing POD struct (ref ctime + wchar) that is normally
|
/** return time representing POD struct (ref ctime + wchar) that is normally
|
||||||
* retrieved with std::localtime. g3::localtime is threadsafe which std::localtime is not.
|
* retrieved with std::localtime. g3::localtime is threadsafe which std::localtime is not.
|
||||||
* g3::localtime is probably used together with @ref g3::systemtime_now */
|
* g3::localtime is probably used together with @ref g3::systemtime_now */
|
||||||
tm localtime(const std::time_t& time);
|
tm localtime(std::time_t time);
|
||||||
|
|
||||||
/** format string must conform to std::put_time's demands.
|
/** format string must conform to std::put_time's demands.
|
||||||
* WARNING: At time of writing there is only so-so compiler support for
|
* WARNING: At time of writing there is only so-so compiler support for
|
||||||
|
@ -164,7 +164,7 @@ namespace g3 {
|
|||||||
#endif
|
#endif
|
||||||
, _file_path(file)
|
, _file_path(file)
|
||||||
, _line(line)
|
, _line(line)
|
||||||
, _function(function)
|
, _function(std::move(function))
|
||||||
, _level(level) {
|
, _level(level) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -120,7 +120,7 @@ namespace {
|
|||||||
|
|
||||||
DWORD64 displacement64;
|
DWORD64 displacement64;
|
||||||
DWORD displacement;
|
DWORD displacement;
|
||||||
char symbol_buffer[sizeof(SYMBOL_INFO) + MAX_SYM_NAME];
|
alignas(SYMBOL_INFO) char symbol_buffer[sizeof(SYMBOL_INFO) + MAX_SYM_NAME];
|
||||||
SYMBOL_INFO *symbol = reinterpret_cast<SYMBOL_INFO *>(symbol_buffer);
|
SYMBOL_INFO *symbol = reinterpret_cast<SYMBOL_INFO *>(symbol_buffer);
|
||||||
symbol->SizeOfStruct = sizeof(SYMBOL_INFO);
|
symbol->SizeOfStruct = sizeof(SYMBOL_INFO);
|
||||||
symbol->MaxNameLen = MAX_SYM_NAME;
|
symbol->MaxNameLen = MAX_SYM_NAME;
|
||||||
@ -216,7 +216,7 @@ namespace stacktrace {
|
|||||||
}); // Raii sym cleanup
|
}); // Raii sym cleanup
|
||||||
|
|
||||||
|
|
||||||
const size_t kmax_frame_dump_size = 64;
|
constexpr size_t kmax_frame_dump_size = 64;
|
||||||
std::vector<uint64_t> frame_pointers(kmax_frame_dump_size);
|
std::vector<uint64_t> frame_pointers(kmax_frame_dump_size);
|
||||||
// C++11: size set and values are zeroed
|
// C++11: size set and values are zeroed
|
||||||
|
|
||||||
|
@ -129,7 +129,7 @@ namespace g3 {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
tm localtime(const std::time_t& ts) {
|
tm localtime(std::time_t ts) {
|
||||||
struct tm tm_snapshot;
|
struct tm tm_snapshot;
|
||||||
#if (defined(WIN32) || defined(_WIN32) || defined(__WIN32__))
|
#if (defined(WIN32) || defined(_WIN32) || defined(__WIN32__))
|
||||||
localtime_s(&tm_snapshot, &ts); // windsows
|
localtime_s(&tm_snapshot, &ts); // windsows
|
||||||
|
Loading…
Reference in New Issue
Block a user