fix: this solves the warning during compilation

This not only solves the warning/error brought up during compilation, it's also just a sort of belt'n'braces approach to make absolutely sure the timestamp length is correct and didn't get truncated or some other error. This was a new warning/error introduced back in gcc 7.1, and it's one of those "you *should* do it this way because it's technically the correct way" things that most developers roll their eyes at but, logically, they're technically correct.
This commit is contained in:
A.M. Rowsell 2025-11-02 07:13:14 +00:00 committed by A.M. Rowsell
commit 1f9050b69e

View file

@ -364,17 +364,23 @@ void chroma_log(const char *level, const char *format, ...) {
va_list args;
char timestamp[32];
int truncation_check = 0;
struct timeval tv;
struct tm *tm_info;
gettimeofday(&tv, NULL);
tm_info = localtime(&tv.tv_sec);
snprintf(timestamp, sizeof(timestamp), "%04d-%02d-%02d %02d:%02d:%02d.%03d",
truncation_check = snprintf(timestamp, sizeof(timestamp), "%04d-%02d-%02d %02d:%02d:%02d.%03d",
tm_info->tm_year + 1900, tm_info->tm_mon + 1, tm_info->tm_mday,
tm_info->tm_hour, tm_info->tm_min, tm_info->tm_sec,
(int)(tv.tv_usec / 1000));
if(truncation_check > 32 || truncation_check < 0) {
// Something went seriously wrong with the snprintf, this is a fairly serious error as
// the timestamp may be incomplete or corrupted, so print a warning
printf("Following timestamp may be incomplete, truncated or corrupted!\n");
}
printf("[%s] %s: ", timestamp, level);
va_start(args, format);