diff options
author | 2015-05-21 20:11:26 -0700 | |
---|---|---|
committer | 2015-05-21 20:11:26 -0700 | |
commit | d94e65afda9abf9e7bd789e3e7fb15f33b524eb8 (patch) | |
tree | 63fffc179a4766fb3042d58c49d2285f93be912a /src/google/protobuf/io/coded_stream_inl.h | |
parent | e1000189bff3cbd0e309c279364dac36541809db (diff) | |
parent | 5db217305f37a79eeccd70f000088a06ec82fcec (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.h | 17 |
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 |