commit e1741dc2223334fcfe7bbfda240fe106d8c64a0a
parent cb4d6aa378f0dcbcb1c0521e065a571a333d9f65
Author: vaplv <vaplv@free.fr>
Date: Thu, 21 Jan 2021 09:30:55 +0100
Fix time_dump function
The returned real_dump_size was wrongly evaluated
Diffstat:
2 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/src/clock_time.c b/src/clock_time.c
@@ -167,7 +167,7 @@ time_dump
"%li %s", (long)Time, Time > 1 ? Suffix "s ": Suffix " "); \
ASSERT(len >= 0); \
if(real_dump_len) { \
- real_dump_len += len; \
+ *real_dump_len += (size_t)len; \
} \
if((size_t)len < available_dump_space) { \
dst += len; \
@@ -213,6 +213,9 @@ time_dump
if(time_nsec) DUMP(time_nsec, "nsec");
}
+ /* Remove last space */
+ if(real_dump_len) *real_dump_len -= 1;
+
if(dump) {
size_t dump_len = strlen(dump);
if(!dump_len && flag) {
@@ -225,6 +228,7 @@ time_dump
}
dump_len = strlen(dump);
}
+ /* Remove last space */
if(dump[dump_len-1] == ' ') {
dump[dump_len-1] = '\0';
}
diff --git a/src/test_time.c b/src/test_time.c
@@ -15,6 +15,7 @@
#include "clock_time.h"
#include <stdlib.h>
+#include <string.h>
int
main(int argc, char** argv)
@@ -24,6 +25,7 @@ main(int argc, char** argv)
char buf[32];
int64_t time = 0;
int64_t i = 0;
+ size_t dump_len;
(void)argc, (void)argv;
CHK(time_current(&start) == &start);
@@ -38,7 +40,8 @@ main(int argc, char** argv)
CHK(time_val(&res, TIME_SEC) == time / 1000000000);
time_dump
- (&res, TIME_SEC|TIME_MSEC|TIME_USEC, NULL, dump, sizeof(dump));
+ (&res, TIME_SEC|TIME_MSEC|TIME_USEC, &dump_len, dump, sizeof(dump));
+ CHK(dump_len == strlen(dump));
printf(">>> %s.\n", dump);
time_dump(&res, TIME_ALL, NULL, dump, sizeof(dump));
printf(">>> %s.\n", dump);
@@ -67,8 +70,13 @@ main(int argc, char** argv)
res.sec = 5;
res.nsec = 524198207;
- time_dump(&res, TIME_ALL, NULL, buf, sizeof(buf));
+ time_dump(&res, TIME_ALL, &dump_len, buf, sizeof(buf));
+ CHK(dump_len >= strlen(buf));
printf(">>> %s.\n", buf);
+ time_dump(&res, TIME_ALL, &dump_len, dump, sizeof(dump));
+ CHK(dump_len >= strlen(dump));
+ printf(">>> %s.\n", dump);
+
return 0;
}