diff options
author | Feng Xiao <xfxyjwf@gmail.com> | 2018-05-06 11:48:44 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-06 11:48:44 -0700 |
commit | 25625b956a2f0d432582009c16553a9fd21c3cea (patch) | |
tree | 548d536d70eab290b05f712613710ab79b1129a5 | |
parent | 513b35dc4e732a5649d50b2c56405109def40624 (diff) | |
parent | d14cacd791ac553b5dfba5f303fc631b42f6e662 (diff) | |
download | protobuf-25625b956a2f0d432582009c16553a9fd21c3cea.tar.gz protobuf-25625b956a2f0d432582009c16553a9fd21c3cea.tar.bz2 protobuf-25625b956a2f0d432582009c16553a9fd21c3cea.zip |
Merge pull request #4590 from PetterS/undefined_fix
Fix error in Clang UndefinedBehaviorSanitizer
-rw-r--r-- | src/google/protobuf/io/printer.cc | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/google/protobuf/io/printer.cc b/src/google/protobuf/io/printer.cc index 8493268d..de67cef1 100644 --- a/src/google/protobuf/io/printer.cc +++ b/src/google/protobuf/io/printer.cc @@ -350,10 +350,12 @@ void Printer::CopyToBuffer(const char* data, int size) { while (size > buffer_size_) { // Data exceeds space in the buffer. Copy what we can and request a // new buffer. - memcpy(buffer_, data, buffer_size_); - offset_ += buffer_size_; - data += buffer_size_; - size -= buffer_size_; + if (buffer_size_ > 0) { + memcpy(buffer_, data, buffer_size_); + offset_ += buffer_size_; + data += buffer_size_; + size -= buffer_size_; + } void* void_buffer; failed_ = !output_->Next(&void_buffer, &buffer_size_); if (failed_) return; |