Fix error in Clang UndefinedBehaviorSanitizer

Pointer Arguments to memcpy can not be null in UndefinedBehaviorSanitizer.
In this case, both the memory and the size was zero. This change allows
protoc to run under UndefinedBehaviorSanitizer.
pull/4590/head
Petter Strandmark 7 years ago
parent 513b35dc4e
commit d14cacd791
  1. 10
      src/google/protobuf/io/printer.cc

@ -350,10 +350,12 @@ void Printer::CopyToBuffer(const char* data, int size) {
while (size > buffer_size_) { while (size > buffer_size_) {
// Data exceeds space in the buffer. Copy what we can and request a // Data exceeds space in the buffer. Copy what we can and request a
// new buffer. // new buffer.
memcpy(buffer_, data, buffer_size_); if (buffer_size_ > 0) {
offset_ += buffer_size_; memcpy(buffer_, data, buffer_size_);
data += buffer_size_; offset_ += buffer_size_;
size -= buffer_size_; data += buffer_size_;
size -= buffer_size_;
}
void* void_buffer; void* void_buffer;
failed_ = !output_->Next(&void_buffer, &buffer_size_); failed_ = !output_->Next(&void_buffer, &buffer_size_);
if (failed_) return; if (failed_) return;

Loading…
Cancel
Save