Index: content/public/common/common_param_traits.cc |
diff --git a/content/public/common/common_param_traits.cc b/content/public/common/common_param_traits.cc |
index 286e6621cc6212cf727ba636c44d4df4a0ba6ceb..38e1fdc64565892510c85af0f81b7105698d6064 100644 |
--- a/content/public/common/common_param_traits.cc |
+++ b/content/public/common/common_param_traits.cc |
@@ -124,22 +124,29 @@ void ParamTraits<net::IPEndPoint>::Log(const param_type& p, std::string* l) { |
void ParamTraits<net::IPAddress>::GetSize(base::PickleSizer* s, |
const param_type& p) { |
- GetParamSize(s, p.bytes()); |
+ // TODO(rch): avoid creating a vector here. |
+ base::StackVector<uint8_t, 16> bytes; |
+ for (uint8_t byte : p.bytes()) |
+ bytes->push_back(byte); |
+ GetParamSize(s, bytes); |
} |
void ParamTraits<net::IPAddress>::Write(base::Pickle* m, const param_type& p) { |
- WriteParam(m, p.bytes()); |
+ // TODO(rch): avoid creating a vector here. |
+ base::StackVector<uint8_t, 16> bytes; |
+ for (uint8_t byte : p.bytes()) |
+ bytes->push_back(byte); |
+ WriteParam(m, bytes); |
} |
bool ParamTraits<net::IPAddress>::Read(const base::Pickle* m, |
base::PickleIterator* iter, |
param_type* p) { |
- std::vector<uint8_t> bytes; |
+ base::StackVector<uint8_t, 16> bytes; |
if (!ReadParam(m, iter, &bytes)) |
return false; |
- if (bytes.size() && |
- bytes.size() != net::IPAddress::kIPv4AddressSize && |
- bytes.size() != net::IPAddress::kIPv6AddressSize) { |
+ if (bytes->size() && bytes->size() != net::IPAddress::kIPv4AddressSize && |
+ bytes->size() != net::IPAddress::kIPv6AddressSize) { |
return false; |
} |
*p = net::IPAddress(bytes); |