Skip to content

Commit a3afdd4

Browse files
committed
[Common] Fix ur_pool_manager
addPool took unique pool handle by reference and later passes rvalue ref to unordered_map::try_emplace. Make AddPool take rvalue ref to make it clear that ownership it passes to the pool manager
1 parent cc2d590 commit a3afdd4

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

source/common/ur_pool_manager.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -223,11 +223,11 @@ template <typename D> struct pool_manager {
223223

224224
public:
225225
static std::pair<ur_result_t, pool_manager>
226-
create(desc_to_pool_map_t descToHandleMap = {}) {
226+
create(desc_to_pool_map_t &&descToHandleMap = {}) {
227227
auto manager = pool_manager();
228228

229229
for (auto &[desc, hPool] : descToHandleMap) {
230-
auto ret = manager.addPool(desc, hPool);
230+
auto ret = manager.addPool(desc, std::move(hPool));
231231
if (ret != UR_RESULT_SUCCESS) {
232232
return {ret, pool_manager()};
233233
}
@@ -237,7 +237,7 @@ template <typename D> struct pool_manager {
237237
}
238238

239239
ur_result_t addPool(const D &desc,
240-
umf::pool_unique_handle_t &hPool) noexcept {
240+
umf::pool_unique_handle_t &&hPool) noexcept {
241241
if (!descToPoolMap.try_emplace(desc, std::move(hPool)).second) {
242242
logger::error("Pool for pool descriptor: {}, already exists", desc);
243243
return UR_RESULT_ERROR_INVALID_ARGUMENT;

test/usm/usmPoolManager.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ TEST_P(urUsmPoolManagerTest, poolManagerPopulate) {
7676
// Populate the pool manager
7777
auto poolUnique = createMockPoolHandle();
7878
ASSERT_NE(poolUnique, nullptr);
79-
ret = manager.addPool(desc, poolUnique);
79+
ret = manager.addPool(desc, std::move(poolUnique));
8080
ASSERT_EQ(ret, UR_RESULT_SUCCESS);
8181
}
8282

@@ -97,11 +97,11 @@ TEST_P(urUsmPoolManagerTest, poolManagerInsertExisting) {
9797
auto poolUnique = createMockPoolHandle();
9898
ASSERT_NE(poolUnique, nullptr);
9999

100-
ret = manager.addPool(desc, poolUnique);
100+
ret = manager.addPool(desc, std::move(poolUnique));
101101
ASSERT_EQ(ret, UR_RESULT_SUCCESS);
102102

103103
// Inserting an existing key should return an error
104-
ret = manager.addPool(desc, poolUnique);
104+
ret = manager.addPool(desc, createMockPoolHandle());
105105
ASSERT_EQ(ret, UR_RESULT_ERROR_INVALID_ARGUMENT);
106106
}
107107

0 commit comments

Comments
 (0)