Skip to content

Commit 5cabaad

Browse files
committed
fix(reg_pool): replace C++14 make_unique and guard against key collision
1 parent 005527a commit 5cabaad

1 file changed

Lines changed: 5 additions & 1 deletion

File tree

flagcx/core/reg_pool.cc

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,10 @@ flagcxResult_t flagcxRegPool::registerBuffer(void *comm, void *data,
194194
}
195195
std::unique_ptr<flagcxRegItem> tmp = std::move(nodeIt->second);
196196
globalPool.erase(nodeIt);
197+
if (globalPool.count(beginAddr)) {
198+
WARN("registerBuffer: unexpected duplicate key at beginAddr");
199+
return flagcxInternalError;
200+
}
197201
globalPool.emplace(beginAddr, std::move(tmp));
198202
}
199203
// Extend forward if new buffer goes beyond existing range
@@ -213,7 +217,7 @@ flagcxResult_t flagcxRegPool::registerBuffer(void *comm, void *data,
213217

214218
// Not found: create new item in global pool
215219
auto &globalPool = regPool[GLOBAL_POOL_KEY];
216-
auto reg = std::make_unique<flagcxRegItem>();
220+
std::unique_ptr<flagcxRegItem> reg(new flagcxRegItem());
217221
reg->beginAddr = beginAddr;
218222
reg->endAddr = endAddr;
219223
reg->refCount = 1;

0 commit comments

Comments
 (0)