warn/error line buffer overflow
Signed-off-by: James Cherry <cherry@parallaxsw.com>
This commit is contained in:
parent
ce72b26df5
commit
8fe8fdc7aa
|
|
@ -145,12 +145,16 @@ Report::printToBufferAppend(const char *fmt,
|
||||||
// Copy args in case we need to grow the buffer.
|
// Copy args in case we need to grow the buffer.
|
||||||
va_list args_copy;
|
va_list args_copy;
|
||||||
va_copy(args_copy, args);
|
va_copy(args_copy, args);
|
||||||
int length = vsnprint(buffer_ + buffer_length_, buffer_size_, fmt, args);
|
size_t length = vsnprint(buffer_ + buffer_length_, buffer_size_- buffer_length_,
|
||||||
if (buffer_length_ >= buffer_size_) {
|
fmt, args);
|
||||||
|
if (length >= buffer_size_) {
|
||||||
|
buffer_size_ = buffer_length_ + length * 2;
|
||||||
|
char *new_buffer = new char[buffer_size_];
|
||||||
|
strncpy(new_buffer, buffer_, buffer_length_);
|
||||||
delete [] buffer_;
|
delete [] buffer_;
|
||||||
buffer_size_ = buffer_length_ * 2;
|
buffer_ = new_buffer;
|
||||||
buffer_ = new char[buffer_size_];
|
length = vsnprint(buffer_ + buffer_length_, buffer_size_ - buffer_length_,
|
||||||
length = vsnprint(buffer_ + buffer_length_, buffer_size_, fmt, args_copy);
|
fmt, args_copy);
|
||||||
}
|
}
|
||||||
buffer_length_ += length;
|
buffer_length_ += length;
|
||||||
va_end(args_copy);
|
va_end(args_copy);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue