diff --git a/level_zero/core/source/context/context_imp.cpp b/level_zero/core/source/context/context_imp.cpp index cabfc3889e..910ca972aa 100644 --- a/level_zero/core/source/context/context_imp.cpp +++ b/level_zero/core/source/context/context_imp.cpp @@ -566,6 +566,10 @@ ze_result_t ContextImp::openEventPoolIpcHandle(const ze_ipc_event_pool_handle_t size_t numEvents = 0; memcpy_s(&numEvents, sizeof(numEvents), hIpc.data + sizeof(int), sizeof(numEvents)); + ze_event_pool_desc_t desc = {ZE_STRUCTURE_TYPE_EVENT_POOL_DESC}; + desc.count = static_cast(numEvents); + auto eventPool = new EventPoolImp(&desc); + uint32_t rootDeviceIndex = std::numeric_limits::max(); memcpy_s(&rootDeviceIndex, sizeof(rootDeviceIndex), hIpc.data + sizeof(int) + sizeof(numEvents), sizeof(rootDeviceIndex)); @@ -590,11 +594,10 @@ ze_result_t ContextImp::openEventPoolIpcHandle(const ze_ipc_event_pool_handle_t true); if (alloc == nullptr) { + delete eventPool; return ZE_RESULT_ERROR_INVALID_ARGUMENT; } - ze_event_pool_desc_t desc = {}; - auto eventPool = new EventPoolImp(&desc); eventPool->context = this; eventPool->eventPoolAllocations = std::make_unique(static_cast(this->rootDeviceIndices.size())); diff --git a/level_zero/core/test/unit_tests/sources/event/test_event.cpp b/level_zero/core/test/unit_tests/sources/event/test_event.cpp index 05f3486a24..d159e1a99f 100644 --- a/level_zero/core/test/unit_tests/sources/event/test_event.cpp +++ b/level_zero/core/test/unit_tests/sources/event/test_event.cpp @@ -387,9 +387,10 @@ TEST_F(EventPoolIPCHandleTests, whenOpeningIpcHandleForEventPoolThenEventPoolIsC res = context->openEventPoolIpcHandle(ipcHandle, &ipcEventPoolHandle); EXPECT_EQ(res, ZE_RESULT_SUCCESS); - L0::EventPool *ipcEventPool = L0::EventPool::fromHandle(ipcEventPoolHandle); + auto ipcEventPool = static_cast(L0::EventPool::fromHandle(ipcEventPoolHandle)); EXPECT_EQ(ipcEventPool->getEventSize(), eventPool->getEventSize()); + EXPECT_EQ(numEvents, static_cast(ipcEventPool->getNumEvents())); res = ipcEventPool->closeIpcHandle(); EXPECT_EQ(res, ZE_RESULT_SUCCESS);