]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
common/buffers: check _num directly in list::c_str() 42087/head
authorKefu Chai <kchai@redhat.com>
Tue, 29 Jun 2021 05:52:04 +0000 (13:52 +0800)
committerKefu Chai <kchai@redhat.com>
Tue, 29 Jun 2021 05:56:02 +0000 (13:56 +0800)
no need to create temporary iterator for comparing it with cend().

Signed-off-by: Kefu Chai <kchai@redhat.com>
src/common/buffer.cc

index 548abc458fdc67ca81be0776d41ab80c3521e9d5..44b7482213b0bdc66bd40e8d5697a2377d39418c 100644 (file)
@@ -1519,16 +1519,18 @@ static ceph::spinlock debug_lock;
    */
   char *buffer::list::c_str()
   {
-    if (_buffers.empty())
-      return 0;                         // no buffers
-
-    auto iter = std::cbegin(_buffers);
-    ++iter;
-
-    if (iter != std::cend(_buffers)) {
+    switch (get_num_buffers()) {
+    case 0:
+      // no buffers
+      return nullptr;
+    case 1:
+      // good, we're already contiguous.
+      break;
+    default:
       rebuild();
+      break;
     }
-    return _buffers.front().c_str();  // good, we're already contiguous.
+    return _buffers.front().c_str();
   }
 
   string buffer::list::to_str() const {