From eee3d700853943f518e29b0fbd4173305403b6b4 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 9 Mar 2016 13:04:13 -0500 Subject: [PATCH] include/buffer: make is_partial work on empty ptr Add a few unit tests. Signed-off-by: Sage Weil --- src/include/buffer.h | 4 +++- src/test/bufferlist.cc | 11 +++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/include/buffer.h b/src/include/buffer.h index d765a76c4cb68..63a9d5d7ea73e 100644 --- a/src/include/buffer.h +++ b/src/include/buffer.h @@ -202,7 +202,9 @@ namespace buffer CEPH_BUFFER_API { return (length() % align) == 0; } bool is_n_page_sized() const { return is_n_align_sized(CEPH_PAGE_SIZE); } - bool is_partial() const { return start() > 0 || end() < raw_length(); } + bool is_partial() const { + return have_raw() && (start() > 0 || end() < raw_length()); + } // accessors raw *get_raw() const { return _raw; } diff --git a/src/test/bufferlist.cc b/src/test/bufferlist.cc index a6120fd061414..450f88bd2c646 100644 --- a/src/test/bufferlist.cc +++ b/src/test/bufferlist.cc @@ -638,6 +638,17 @@ TEST(BufferPtr, is_n_page_sized) { } } +TEST(BufferPtr, is_partial) { + bufferptr a; + EXPECT_FALSE(a.is_partial()); + bufferptr b(10); + EXPECT_FALSE(b.is_partial()); + bufferptr c(b, 1, 9); + EXPECT_TRUE(c.is_partial()); + bufferptr d(b, 0, 9); + EXPECT_TRUE(d.is_partial()); +} + TEST(BufferPtr, accessors) { unsigned len = 17; bufferptr ptr(len); -- 2.39.5