| 1460 | } |
| 1461 | |
| 1462 | buffer::list::contiguous_filler buffer::list::append_hole(const unsigned len) |
| 1463 | { |
| 1464 | _len += len; |
| 1465 | |
| 1466 | if (unlikely(get_append_buffer_unused_tail_length() < len)) { |
| 1467 | // make a new append_buffer. fill out a complete page, factoring in |
| 1468 | // the raw_combined overhead. |
| 1469 | auto& new_back = refill_append_space(len); |
| 1470 | new_back.set_length(len); |
| 1471 | return { new_back.c_str() }; |
| 1472 | } else if (unlikely(_carriage != &_buffers.back())) { |
| 1473 | auto bptr = ptr_node::create(*_carriage, _carriage->length(), 0); |
| 1474 | _carriage = bptr.get(); |
| 1475 | _buffers.push_back(*bptr.release()); |
| 1476 | _num += 1; |
| 1477 | } |
| 1478 | _carriage->set_length(_carriage->length() + len); |
| 1479 | return { _carriage->end_c_str() - len }; |
| 1480 | } |
| 1481 | |
| 1482 | void buffer::list::prepend_zero(unsigned len) |
| 1483 | { |