From 8127afdc97086af3f9feb7f4905af830880bdeed Mon Sep 17 00:00:00 2001 From: Aleksey Loginov Date: Mon, 19 Aug 2024 16:42:03 +0300 Subject: [PATCH 1/2] fix buffer capacity --- gh-pages | 1 + src/rpp/rpp/operators/buffer.hpp | 3 +++ src/tests/rpp/test_buffer.cpp | 12 ++++++++++++ 3 files changed, 16 insertions(+) create mode 160000 gh-pages diff --git a/gh-pages b/gh-pages new file mode 160000 index 000000000..37757bfbf --- /dev/null +++ b/gh-pages @@ -0,0 +1 @@ +Subproject commit 37757bfbfa14d8b21e4ae287ca55e4376acd16a0 diff --git a/src/rpp/rpp/operators/buffer.hpp b/src/rpp/rpp/operators/buffer.hpp index f2e772ea6..325b38292 100644 --- a/src/rpp/rpp/operators/buffer.hpp +++ b/src/rpp/rpp/operators/buffer.hpp @@ -41,8 +41,11 @@ namespace rpp::operators::details m_bucket.push_back(std::forward(v)); if (m_bucket.size() == m_bucket.capacity()) { + const auto capacity = m_bucket.capacity(); m_observer.on_next(std::move(m_bucket)); + m_bucket.clear(); + m_bucket.reserve(capacity); } } diff --git a/src/tests/rpp/test_buffer.cpp b/src/tests/rpp/test_buffer.cpp index 82964c588..a045ce13c 100644 --- a/src/tests/rpp/test_buffer.cpp +++ b/src/tests/rpp/test_buffer.cpp @@ -104,6 +104,18 @@ TEST_CASE("buffer bundles items") | rpp::ops::subscribe(mock); } } + SECTION("accept by moving") + { + REQUIRE_CALL(*mock, on_next_rvalue(std::vector{1, 2})).IN_SEQUENCE(s); + REQUIRE_CALL(*mock, on_next_rvalue(std::vector{3, 4})).IN_SEQUENCE(s); + + rpp::source::just(1, 2, 3, 4) + | rpp::ops::buffer(2) + | rpp::ops::subscribe([&mock](std::vector b) // NOLINT + { + mock.on_next(std::move(b)); + }); + } } TEST_CASE("buffer satisfies disposable contracts") From a67ac3e340a255483caf0863555bfdca605a1622 Mon Sep 17 00:00:00 2001 From: Aleksey Loginov Date: Mon, 19 Aug 2024 16:45:43 +0300 Subject: [PATCH 2/2] remove gh-pages --- gh-pages | 1 - 1 file changed, 1 deletion(-) delete mode 160000 gh-pages diff --git a/gh-pages b/gh-pages deleted file mode 160000 index 37757bfbf..000000000 --- a/gh-pages +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 37757bfbfa14d8b21e4ae287ca55e4376acd16a0