< 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 >