| 1501 | } |
| 1502 | |
| 1503 | void buffer::list::append_zero(unsigned len) |
| 1504 | { |
| 1505 | _len += len; |
| 1506 | |
| 1507 | const unsigned free_in_last = get_append_buffer_unused_tail_length(); |
| 1508 | const unsigned first_round = std::min(len, free_in_last); |
| 1509 | if (first_round) { |
| 1510 | if (unlikely(_carriage != &_buffers.back())) { |
| 1511 | auto bptr = ptr_node::create(*_carriage, _carriage->length(), 0); |
| 1512 | _carriage = bptr.get(); |
| 1513 | _buffers.push_back(*bptr.release()); |
| 1514 | _num += 1; |
| 1515 | } |
| 1516 | _carriage->append_zeros(first_round); |
| 1517 | } |
| 1518 | |
| 1519 | const unsigned second_round = len - first_round; |
| 1520 | if (second_round) { |
| 1521 | auto& new_back = refill_append_space(second_round); |
| 1522 | new_back.set_length(second_round); |
| 1523 | new_back.zero(false); |
| 1524 | } |
| 1525 | } |
| 1526 | |
| 1527 | |
| 1528 | /* |