From 3924f70d6b2054ce5902b917a48b0fa27caac6d9 Mon Sep 17 00:00:00 2001 From: Markus Makela Date: Fri, 20 Feb 2015 04:42:02 +0200 Subject: [PATCH] Fixed log manager sometimes not writing the last character in a log message. This was caused by type conversions from int to size_t and the usage of the MAX macro. --- log_manager/log_manager.cc | 10 ++++++---- server/core/test/testhash.c | 2 +- server/core/test/testserver.c | 2 +- server/modules/filter/test/harness_ui.c | 2 +- utils/skygw_utils.cc | 12 ++++++------ utils/skygw_utils.h | 4 ++-- 6 files changed, 17 insertions(+), 15 deletions(-) diff --git a/log_manager/log_manager.cc b/log_manager/log_manager.cc index 1171414df..11d1dbc23 100644 --- a/log_manager/log_manager.cc +++ b/log_manager/log_manager.cc @@ -683,7 +683,7 @@ static int logmanager_write_log( size_t safe_str_len; /** Length of session id */ size_t sesid_str_len; - + size_t cmplen = 0; /** * 2 braces, 2 spaces and terminating char * If session id is stored to tls_log_info structure, allocate @@ -691,7 +691,7 @@ static int logmanager_write_log( */ if (id == LOGFILE_TRACE && tls_log_info.li_sesid != 0) { - sesid_str_len = 2+2+get_decimal_len(tls_log_info.li_sesid)+1; + sesid_str_len = 5*sizeof(char)+get_decimal_len(tls_log_info.li_sesid); } else { @@ -699,14 +699,16 @@ static int logmanager_write_log( } timestamp_len = get_timestamp_len(); + cmplen = sesid_str_len > 0 ? sesid_str_len - sizeof(char) : 0; + /** Find out how much can be safely written with current block size */ - if (timestamp_len-1+MAX(sesid_str_len-1,0)+str_len > lf->lf_buf_size) + if (timestamp_len-sizeof(char)+cmplen+str_len > lf->lf_buf_size) { safe_str_len = lf->lf_buf_size; } else { - safe_str_len = timestamp_len-1+MAX(sesid_str_len-1,0)+str_len; + safe_str_len = timestamp_len-sizeof(char)+cmplen+str_len; } /** * Seek write position and register to block buffer. diff --git a/server/core/test/testhash.c b/server/core/test/testhash.c index 89720da80..776c8d93a 100644 --- a/server/core/test/testhash.c +++ b/server/core/test/testhash.c @@ -157,7 +157,7 @@ static bool do_hashtest( CHK_HASHTABLE(h); hashtable_free(h); -return_succp: + free(val_arr); return succp; } diff --git a/server/core/test/testserver.c b/server/core/test/testserver.c index de40847d6..7e00b4f0b 100644 --- a/server/core/test/testserver.c +++ b/server/core/test/testserver.c @@ -32,7 +32,7 @@ #include #include - +#include /** * test1 Allocate a server and do lots of other things * diff --git a/server/modules/filter/test/harness_ui.c b/server/modules/filter/test/harness_ui.c index 8854b5c49..fa8d14e3d 100644 --- a/server/modules/filter/test/harness_ui.c +++ b/server/modules/filter/test/harness_ui.c @@ -187,7 +187,7 @@ int main(int argc, char** argv){ } instance.thrpool = t_thr_pool; - int thr_num = 1; + intptr_t thr_num = 1; for(i = 0;i