- if (appender != NULL) {
- xbt_assert(cat->layout,
- "No valid layout for the appender of category %s",
- cat->name);
- cat->layout->do_layout(cat->layout, ev, fmt, appender);
+
+ if (!appender)
+ continue; /* No appender, try next */
+
+ xbt_assert(cat->layout,
+ "No valid layout for the appender of category %s", cat->name);
+
+ /* First, try with a static buffer */
+ if (XBT_LOG_STATIC_BUFFER_SIZE) {
+ char buff[XBT_LOG_STATIC_BUFFER_SIZE];
+ int done;
+ ev->buffer = buff;
+ ev->buffer_size = sizeof buff;
+ va_start(ev->ap, fmt);
+ done = cat->layout->do_layout(cat->layout, ev, fmt);
+ va_end(ev->ap);
+ if (done) {
+ appender->do_append(appender, buff);
+ continue; /* Ok, that worked: go next */
+ }