From c8d148cf97eb8921a4f3e6df1a4fe45ca87b2f76 Mon Sep 17 00:00:00 2001 From: Johann Dreo Date: Tue, 1 Oct 2024 09:47:23 +0200 Subject: [PATCH] fix(depth): avoid overflow when manually setting depth Setting the depth to INTMAX was overflowing if strep calls was also set, resulting in no log triggered. --- clutchlog/clutchlog.h | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/clutchlog/clutchlog.h b/clutchlog/clutchlog.h index 764529d..9a2c57f 100644 --- a/clutchlog/clutchlog.h +++ b/clutchlog/clutchlog.h @@ -32,6 +32,7 @@ #define CLUTCHLOG_HAVE_UNIX_SYSINFO 1 #else #define CLUTCHLOG_HAVE_UNIX_SYSINFO 0 + // #pragma message("[clutchlog] no POSIX SYSINFO header") #endif //! True if the system can handle the `hfill` feature. @@ -42,6 +43,7 @@ #define CLUTCHLOG_HAVE_UNIX_SYSIOCTL 1 #else #define CLUTCHLOG_HAVE_UNIX_SYSIOCTL 0 + // #pragma message("[clutchlog] no POSIX SYSIOCTL header") #endif @@ -52,7 +54,12 @@ #ifndef NDEBUG //! Actually enable clutchlog features. #define WITH_CLUTCHLOG + // #pragma message("[clutchlog] automatically enabled") + // #else + // #pragma message("[clutchlog] automatically disabled") #endif +// #else + // #pragma message("[clutchlog] manually enabled") #endif /********************************************************************** @@ -171,6 +178,7 @@ #define CLUTCHDUMP( LEVEL, CONTAINER, FILENAME ) do {/*nothing*/} while(0) #define CLUTCHFUNC( LEVEL, FUNC, ... ) do {/*nothing*/} while(0) #define CLUTCHCODE( LEVEL, CODE ) do {/*nothing*/} while(0) + // #pragma message("[clutchlog] fully disabled") #endif // WITH_CLUTCHLOG /********************************************************************** @@ -999,7 +1007,9 @@ class clutchlog #if CLUTCHLOG_HAVE_UNIX_SYSINFO == 1 //! Set the stack depth above which logs are not printed. - void depth(size_t d) {_depth = d;} + void depth(size_t d) { + _depth = std::min(d, std::numeric_limits::max() - _strip_calls); + } //! Get the stack depth above which logs are not printed. size_t depth() const {return _depth;}