]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
include/buffer: make is_partial work on empty ptr
authorSage Weil <sage@redhat.com>
Wed, 9 Mar 2016 18:04:13 +0000 (13:04 -0500)
committerSage Weil <sage@redhat.com>
Fri, 11 Mar 2016 15:41:37 +0000 (10:41 -0500)
Add a few unit tests.

Signed-off-by: Sage Weil <sage@redhat.com>
src/include/buffer.h
src/test/bufferlist.cc

index d765a76c4cb683696edbff51966c1ff183327bfc..63a9d5d7ea73e0b8bcdbed67bf02700efd38d75b 100644 (file)
@@ -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; }
index a6120fd0614141e7583f1f71cf3c1b5456fa72b6..450f88bd2c6462af4951436035a2ae647b0c44b8 100644 (file)
@@ -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);