From e6367bae140986ea1ce0c4d9493ff36343e7bc30 Mon Sep 17 00:00:00 2001 From: Gil Pitney Date: Tue, 2 Jun 2015 22:36:28 +0000 Subject: Fix possible CPUDevice object mem leak in clCreateSubDevices Devices were previously being created during enumeration even when client was not asking for the devices. This is fixed. Signed-off-by: Gil Pitney --- src/core/cpu/device.cpp | 8 +++++--- src/core/cpu/device.h | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/core/cpu/device.cpp b/src/core/cpu/device.cpp index a8d6aaf..254bcbd 100644 --- a/src/core/cpu/device.cpp +++ b/src/core/cpu/device.cpp @@ -372,9 +372,11 @@ cl_int CPUDevice::createSubDevices( if (partition_size) { // Create num_new_devices SubDevices: Coal::CPUDevice * new_device; - for (int i = 0; i < num_new_devices; i++) { - new_device = new CPUDevice(this, partition_size); - if (out_devices) out_devices[i] = (cl_device_id)new_device; + if (out_devices) { + for (int i = 0; i < num_new_devices; i++) { + new_device = new CPUDevice(this, partition_size); + out_devices[i] = (cl_device_id)new_device; + } } if (num_devices_ret) *num_devices_ret = num_new_devices; } diff --git a/src/core/cpu/device.h b/src/core/cpu/device.h index b2f5711..a730d08 100644 --- a/src/core/cpu/device.h +++ b/src/core/cpu/device.h @@ -103,7 +103,7 @@ class CPUDevice : public DeviceInterface std::string builtinsHeader(void) const { return "cpu.h"; } private: - unsigned int p_cores, p_num_events, p_compute_units; + unsigned int p_cores, p_num_events; float p_cpu_mhz; std::string p_device_name; pthread_t *p_workers; -- cgit v1.2.3