OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/memory/scoped_ptr.h" | 5 #include "base/memory/scoped_ptr.h" |
6 #include "net/base/address_tracker_linux.h" | 6 #include "net/base/address_tracker_linux.h" |
7 | 7 |
8 #include <linux/if.h> | 8 #include <linux/if.h> |
9 | 9 |
10 #include <vector> | 10 #include <vector> |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
115 attr.nla_type = type; | 115 attr.nla_type = type; |
116 Append(&attr, sizeof(attr)); | 116 Append(&attr, sizeof(attr)); |
117 Align(); | 117 Align(); |
118 Append(data, length); | 118 Append(data, length); |
119 Align(); | 119 Align(); |
120 } | 120 } |
121 | 121 |
122 void AppendTo(Buffer* output) const { | 122 void AppendTo(Buffer* output) const { |
123 CHECK_EQ(NLMSG_ALIGN(output->size()), output->size()); | 123 CHECK_EQ(NLMSG_ALIGN(output->size()), output->size()); |
124 output->reserve(output->size() + NLMSG_LENGTH(buffer_.size())); | 124 output->reserve(output->size() + NLMSG_LENGTH(buffer_.size())); |
125 output->insert(output->end(), buffer_.begin(), buffer_.end()); | 125 output->insert(output->end(), buffer_.begin(), buffer_.end()); |
Fabrice (no longer in Chrome)
2014/11/12 11:52:29
That's the line that fails to compile with buffer_
Nico
2014/11/13 06:21:12
Bizarre, output and buffer_ have the same type. Oh
Fabrice (no longer in Chrome)
2014/11/13 10:52:07
Turns out the issue is the same in both tests. I h
| |
126 } | 126 } |
127 | 127 |
128 private: | 128 private: |
129 void Append(const void* data, size_t length) { | 129 void Append(const void* data, size_t length) { |
130 const char* chardata = reinterpret_cast<const char*>(data); | 130 const char* chardata = reinterpret_cast<const char*>(data); |
131 buffer_.insert(buffer_.end(), chardata, chardata + length); | 131 buffer_.insert(buffer_.end(), chardata, chardata + length); |
132 } | 132 } |
133 | 133 |
134 void Align() { | 134 void Align() { |
135 header()->nlmsg_len = buffer_.size(); | 135 header()->nlmsg_len = buffer_.size(); |
136 buffer_.insert(buffer_.end(), NLMSG_ALIGN(buffer_.size()) - buffer_.size(), | 136 buffer_.insert(buffer_.end(), NLMSG_ALIGN(buffer_.size()) - buffer_.size(), |
137 0); | 137 0); |
138 CHECK(NLMSG_OK(header(), buffer_.size())); | 138 CHECK(NLMSG_OK(header(), buffer_.size())); |
139 } | 139 } |
140 | 140 |
141 struct nlmsghdr* header() { | 141 struct nlmsghdr* header() { |
142 return reinterpret_cast<struct nlmsghdr*>(&buffer_[0]); | 142 return reinterpret_cast<struct nlmsghdr*>(&buffer_[0]); |
143 } | 143 } |
144 | 144 |
145 Buffer buffer_; | 145 std::vector<int8_t> buffer_; |
Fabrice (no longer in Chrome)
2014/11/12 11:52:29
Sorry, I missed it. This only fails with GCC, Clan
| |
146 }; | 146 }; |
147 | 147 |
148 #define INFINITY_LIFE_TIME 0xFFFFFFFF | 148 #define INFINITY_LIFE_TIME 0xFFFFFFFF |
149 | 149 |
150 void MakeAddrMessageWithCacheInfo(uint16 type, | 150 void MakeAddrMessageWithCacheInfo(uint16 type, |
151 uint8 flags, | 151 uint8 flags, |
152 uint8 family, | 152 uint8 family, |
153 const IPAddressNumber& address, | 153 const IPAddressNumber& address, |
154 const IPAddressNumber& local, | 154 const IPAddressNumber& local, |
155 uint32 preferred_lifetime, | 155 uint32 preferred_lifetime, |
(...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
547 | 547 |
548 TEST_F(AddressTrackerLinuxTest, NonTrackingModeInit) { | 548 TEST_F(AddressTrackerLinuxTest, NonTrackingModeInit) { |
549 AddressTrackerLinux tracker; | 549 AddressTrackerLinux tracker; |
550 tracker.Init(); | 550 tracker.Init(); |
551 } | 551 } |
552 | 552 |
553 } // namespace | 553 } // namespace |
554 | 554 |
555 } // namespace internal | 555 } // namespace internal |
556 } // namespace net | 556 } // namespace net |
OLD | NEW |