aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/google/protobuf/io/coded_stream_inl.h
diff options
context:
space:
mode:
authorGravatar Paul Yang <paulyang1211@gmail.com>2015-05-21 20:11:26 -0700
committerGravatar Paul Yang <paulyang1211@gmail.com>2015-05-21 20:11:26 -0700
commitd94e65afda9abf9e7bd789e3e7fb15f33b524eb8 (patch)
tree63fffc179a4766fb3042d58c49d2285f93be912a /src/google/protobuf/io/coded_stream_inl.h
parente1000189bff3cbd0e309c279364dac36541809db (diff)
parent5db217305f37a79eeccd70f000088a06ec82fcec (diff)
Merge pull request #413 from TeBoring/master
down-integrate internal changes
Diffstat (limited to 'src/google/protobuf/io/coded_stream_inl.h')
-rw-r--r--src/google/protobuf/io/coded_stream_inl.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/google/protobuf/io/coded_stream_inl.h b/src/google/protobuf/io/coded_stream_inl.h
index cd8d1746..fa20f208 100644
--- a/src/google/protobuf/io/coded_stream_inl.h
+++ b/src/google/protobuf/io/coded_stream_inl.h
@@ -66,6 +66,23 @@ inline bool CodedInputStream::InternalReadStringInline(string* buffer,
return ReadStringFallback(buffer, size);
}
+inline bool CodedInputStream::InternalReadRawInline(void* buffer, int size) {
+ int current_buffer_size;
+ while ((current_buffer_size = BufferSize()) < size) {
+ // Reading past end of buffer. Copy what we have, then refresh.
+ memcpy(buffer, buffer_, current_buffer_size);
+ buffer = reinterpret_cast<uint8*>(buffer) + current_buffer_size;
+ size -= current_buffer_size;
+ Advance(current_buffer_size);
+ if (!Refresh()) return false;
+ }
+
+ memcpy(buffer, buffer_, size);
+ Advance(size);
+
+ return true;
+}
+
} // namespace io
} // namespace protobuf
} // namespace google