diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-01-23 17:21:03 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-01-23 16:25:15 +0000 |
commit | c551f43206405019121bd2b2c93714319a0a3300 (patch) | |
tree | 1f48c30631c421fd4bbb3c36da20183c8a2ed7d7 /chromium/base/big_endian.cc | |
parent | 7961cea6d1041e3e454dae6a1da660b453efd238 (diff) |
BASELINE: Update Chromium to 79.0.3945.139
Change-Id: I336b7182fab9bca80b709682489c07db112eaca5
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/base/big_endian.cc')
-rw-r--r-- | chromium/base/big_endian.cc | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/chromium/base/big_endian.cc b/chromium/base/big_endian.cc index 514581fe415..9e9e672e490 100644 --- a/chromium/base/big_endian.cc +++ b/chromium/base/big_endian.cc @@ -4,6 +4,7 @@ #include "base/big_endian.h" +#include "base/numerics/checked_math.h" #include "base/strings/string_piece.h" namespace base { @@ -59,6 +60,29 @@ bool BigEndianReader::ReadU64(uint64_t* value) { return Read(value); } +template <typename T> +bool BigEndianReader::ReadLengthPrefixed(base::StringPiece* out) { + T t_len; + if (!Read(&t_len)) + return false; + size_t len = strict_cast<size_t>(t_len); + const char* original_ptr = ptr_; + if (!Skip(len)) { + ptr_ -= sizeof(T); + return false; + } + *out = base::StringPiece(original_ptr, len); + return true; +} + +bool BigEndianReader::ReadU8LengthPrefixed(base::StringPiece* out) { + return ReadLengthPrefixed<uint8_t>(out); +} + +bool BigEndianReader::ReadU16LengthPrefixed(base::StringPiece* out) { + return ReadLengthPrefixed<uint16_t>(out); +} + BigEndianWriter::BigEndianWriter(char* buf, size_t len) : ptr_(buf), end_(ptr_ + len) {} |