< prev index next >

src/share/vm/logging/logTagSet.cpp

Print this page
rev 10979 : 8140594: Various minor code improvements (compiler)

*** 102,117 **** char buf[vwrite_buffer_size]; va_list saved_args; // For re-format on buf overflow. va_copy(saved_args, args); size_t prefix_len = _write_prefix(buf, sizeof(buf)); // Check that string fits in buffer; resize buffer if necessary ! int ret = os::log_vsnprintf(buf + prefix_len, sizeof(buf) - prefix_len, fmt, args); assert(ret >= 0, "Log message buffer issue"); if ((size_t)ret >= sizeof(buf)) { size_t newbuf_len = prefix_len + ret + 1; char* newbuf = NEW_C_HEAP_ARRAY(char, newbuf_len, mtLogging); ! memcpy(newbuf, buf, prefix_len); ret = os::log_vsnprintf(newbuf + prefix_len, newbuf_len - prefix_len, fmt, saved_args); assert(ret >= 0, "Log message buffer issue"); log(level, newbuf); FREE_C_HEAP_ARRAY(char, newbuf); } else { --- 102,122 ---- char buf[vwrite_buffer_size]; va_list saved_args; // For re-format on buf overflow. va_copy(saved_args, args); size_t prefix_len = _write_prefix(buf, sizeof(buf)); // Check that string fits in buffer; resize buffer if necessary ! int ret; ! if (prefix_len < vwrite_buffer_size) { ! ret = os::log_vsnprintf(buf + prefix_len, sizeof(buf) - prefix_len, fmt, args); ! } else { ! ret = prefix_len + os::log_vsnprintf(buf, sizeof(buf), fmt, args); ! } assert(ret >= 0, "Log message buffer issue"); if ((size_t)ret >= sizeof(buf)) { size_t newbuf_len = prefix_len + ret + 1; char* newbuf = NEW_C_HEAP_ARRAY(char, newbuf_len, mtLogging); ! prefix_len = _write_prefix(newbuf, newbuf_len); ret = os::log_vsnprintf(newbuf + prefix_len, newbuf_len - prefix_len, fmt, saved_args); assert(ret >= 0, "Log message buffer issue"); log(level, newbuf); FREE_C_HEAP_ARRAY(char, newbuf); } else {
< prev index next >