aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFeng Xiao <xfxyjwf@gmail.com>2018-05-06 11:48:44 -0700
committerGitHub <noreply@github.com>2018-05-06 11:48:44 -0700
commit25625b956a2f0d432582009c16553a9fd21c3cea (patch)
tree548d536d70eab290b05f712613710ab79b1129a5
parent513b35dc4e732a5649d50b2c56405109def40624 (diff)
parentd14cacd791ac553b5dfba5f303fc631b42f6e662 (diff)
downloadprotobuf-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.cc10
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;