return new raw_unshareable(len);
}
- class dummy_raw : public buffer::raw {
- public:
- dummy_raw()
- : raw(UINT_MAX)
- {}
- virtual raw* clone_empty() override {
- return new dummy_raw();
- }
- };
-
- buffer::raw* buffer::create_dummy() {
- return new dummy_raw();
- }
-
buffer::ptr::ptr(raw *r) : _raw(r), _off(0), _len(r->len) // no lock needed; this is an unref raw.
{
r->nref.inc();
raw* create_page_aligned(unsigned len);
raw* create_zero_copy(unsigned len, int fd, int64_t *offset);
raw* create_unshareable(unsigned len);
- raw* create_dummy();
raw* create_static(unsigned len, char *buf);
raw* claim_buffer(unsigned len, char *buf, deleter del);
}
}
-TEST(BufferListIterator, copy_huge) {
- constexpr unsigned len = 2268888894U;
- static_assert(int(len) < 0,
- "should be a number underflows when being casted to int.");
- bufferptr ptr(buffer::create_dummy());
- ptr.set_length(len);
-
- bufferlist src, dest;
- src.append(ptr);
- auto bp = src.begin();
- bp.copy(len, dest);
- // contents_equal() is not for this test
- EXPECT_EQ(len, dest.length());
-}
-
TEST(BufferListIterator, copy_in) {
bufferlist bl;
const char *existing = "XXX";