]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/boost/boost/beast/core/impl/multi_buffer.hpp
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / boost / boost / beast / core / impl / multi_buffer.hpp
index 510d1265e4bb3ac670899a527d361c6bf65829d0..bd4087cd4b8ddca483708ee80b7cad8712f14c5a 100644 (file)
@@ -912,15 +912,17 @@ prepare(size_type n) ->
         destroy(reuse);
         if(n > 0)
         {
-            auto const growth_factor = 2.0f;
+            std::size_t const growth_factor = 2;
+            std::size_t altn = in_size_ * growth_factor;
+           // Overflow detection:
+            if(in_size_ > altn)
+                altn = (std::numeric_limits<std::size_t>::max)();
+            else
+                altn = (std::max<std::size_t>)(512, altn);
             auto const size =
                 (std::min<std::size_t>)(
                     max_ - total,
-                    (std::max<std::size_t>)({
-                        static_cast<std::size_t>(
-                            in_size_ * growth_factor - in_size_),
-                        512,
-                        n}));
+                    (std::max<std::size_t>)(n, altn));
             auto& e = alloc(size);
             list_.push_back(e);
             if(out_ == list_.end())