adb: fix front_size, front_data. am: 4da40a9a5b
Change-Id: Ia54083330d8e8bde1f86821d9900644d73329bed
This commit is contained in:
commit
3a69cc704b
3 changed files with 20 additions and 3 deletions
|
@ -51,7 +51,7 @@ void IOVector::drop_front(IOVector::size_type len) {
|
|||
auto dropped = 0u;
|
||||
while (dropped < len) {
|
||||
const auto next = chain_[start_index_].size() - begin_offset_;
|
||||
if (dropped + next < len) {
|
||||
if (dropped + next <= len) {
|
||||
pop_front_block();
|
||||
dropped += next;
|
||||
} else {
|
||||
|
|
|
@ -155,7 +155,7 @@ struct IOVector {
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
return chain_.front().data() + begin_offset_;
|
||||
return chain_[start_index_].data() + begin_offset_;
|
||||
}
|
||||
|
||||
size_type front_size() const {
|
||||
|
@ -163,7 +163,7 @@ struct IOVector {
|
|||
return 0;
|
||||
}
|
||||
|
||||
return chain_.front().size() - begin_offset_;
|
||||
return chain_[start_index_].size() - begin_offset_;
|
||||
}
|
||||
|
||||
size_type size() const { return chain_length_ - begin_offset_; }
|
||||
|
|
|
@ -117,3 +117,20 @@ TEST(IOVector, misaligned_split) {
|
|||
ASSERT_EQ(1ULL, bc.size());
|
||||
ASSERT_EQ(create_block("x"), bc.coalesce());
|
||||
}
|
||||
|
||||
TEST(IOVector, drop_front) {
|
||||
IOVector vec;
|
||||
|
||||
vec.append(create_block('x', 2));
|
||||
vec.append(create_block('y', 1000));
|
||||
ASSERT_EQ(2U, vec.front_size());
|
||||
ASSERT_EQ(1002U, vec.size());
|
||||
|
||||
vec.drop_front(1);
|
||||
ASSERT_EQ(1U, vec.front_size());
|
||||
ASSERT_EQ(1001U, vec.size());
|
||||
|
||||
vec.drop_front(1);
|
||||
ASSERT_EQ(1000U, vec.front_size());
|
||||
ASSERT_EQ(1000U, vec.size());
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue