Skip to content

Commit eae48f6

Browse files
authored
[SYCL][L0] Fix memory leak in piDevicesGet() (#1917)
Exit early if 'Devices' parameter is nullptr. Signed-off-by: Byoungro So <[email protected]>
1 parent 91a25a0 commit eae48f6

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

sycl/plugins/level_zero/pi_level0.cpp

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -612,10 +612,15 @@ pi_result piDevicesGet(pi_platform Platform, pi_device_type DeviceType,
612612
if (NumDevices)
613613
*NumDevices = ZeDeviceCount;
614614

615+
if (NumEntries == 0) {
616+
assert(Devices == nullptr &&
617+
"Devices should be nullptr when querying the number of devices");
618+
return PI_SUCCESS;
619+
}
620+
615621
try {
616-
// TODO: Delete array at teardown
617-
ze_device_handle_t *ZeDevices = new ze_device_handle_t[ZeDeviceCount];
618-
ZE_CALL(zeDeviceGet(ZeDriver, &ZeDeviceCount, ZeDevices));
622+
std::vector<ze_device_handle_t> ZeDevices(ZeDeviceCount);
623+
ZE_CALL(zeDeviceGet(ZeDriver, &ZeDeviceCount, ZeDevices.data()));
619624

620625
for (uint32_t I = 0; I < ZeDeviceCount; ++I) {
621626
if (I < NumEntries) {

0 commit comments

Comments
 (0)