From: Arnaud Giersch Date: Tue, 25 Oct 2011 20:56:57 +0000 (+0200) Subject: In xbt_log_layout_simple_doit, add missing calls to check_overflow. X-Git-Tag: exp_20120216~540^2 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/7956846a8584348ea3a598b94b70a3801c910c4f?hp=bee83c20e96f95cbdcc319c89758ff9e00f81343 In xbt_log_layout_simple_doit, add missing calls to check_overflow. Also keep room for the final '\0'. --- diff --git a/src/xbt/xbt_log_layout_format.c b/src/xbt/xbt_log_layout_format.c index f7ca02d260..67ab93d2cc 100644 --- a/src/xbt/xbt_log_layout_format.c +++ b/src/xbt/xbt_log_layout_format.c @@ -204,10 +204,10 @@ static void xbt_log_layout_format_dynamic(xbt_log_layout_t l, #undef check_overflow #define check_overflow \ - if (p-ev->buffer > XBT_LOG_BUFF_SIZE) { /* buffer overflow */ \ - xbt_log_layout_format_dynamic(l,ev,msg_fmt,app); \ - return;\ - } + if (p - ev->buffer >= XBT_LOG_BUFF_SIZE) { /* buffer overflow */ \ + xbt_log_layout_format_dynamic(l,ev,msg_fmt,app); \ + return; \ + } else ((void)0) #define show_it(data,letter) \ do { \ diff --git a/src/xbt/xbt_log_layout_simple.c b/src/xbt/xbt_log_layout_simple.c index f6a09be31c..26de2a07c6 100644 --- a/src/xbt/xbt_log_layout_simple.c +++ b/src/xbt/xbt_log_layout_simple.c @@ -59,10 +59,10 @@ static void xbt_log_layout_simple_dynamic(xbt_log_layout_t l, /* only used after the format using: we suppose that the buffer is big enough to display our data */ #undef check_overflow #define check_overflow \ - if (p-ev->buffer > XBT_LOG_BUFF_SIZE) { /* buffer overflow */ \ - xbt_log_layout_simple_dynamic(l,ev,fmt,app); \ - return; \ - } + if (p - ev->buffer >= XBT_LOG_BUFF_SIZE) { /* buffer overflow */ \ + xbt_log_layout_simple_dynamic(l,ev,fmt,app); \ + return; \ + } else ((void)0) static void xbt_log_layout_simple_doit(xbt_log_layout_t l, xbt_log_event_t ev, @@ -95,13 +95,16 @@ static void xbt_log_layout_simple_doit(xbt_log_layout_t l, check_overflow; /* Display file position if not INFO */ - if (ev->priority != xbt_log_priority_info && !xbt_log_no_loc) + if (ev->priority != xbt_log_priority_info && !xbt_log_no_loc) { p += snprintf(p, XBT_LOG_BUFF_SIZE - (p - ev->buffer), "%s:%d: ", ev->fileName, ev->lineNum); + check_overflow; + } /* Display category name */ p += snprintf(p, XBT_LOG_BUFF_SIZE - (p - ev->buffer), "[%s/%s] ", ev->cat->name, xbt_log_priority_names[ev->priority]); + check_overflow; /* Display user-provided message */ p += vsnprintf(p, XBT_LOG_BUFF_SIZE - (p - ev->buffer), fmt, ev->ap);