workgroups: fix program/kernel object leak (#1775)
`create_single_kernel_helper` is called in a loop, overwriting the objects contained in the wrapper classes. The wrapper class is not aware of this, as the overwriting happens through its `operator&`. Move the wrapper objects into the loop, so that the contained objects get released as soon as the program and kernel objects are no longer needed. Signed-off-by: Sven van Haastregt <sven.vanhaastregt@arm.com>
This commit is contained in:
parent
845ec694bb
commit
9b0f78549a
1 changed files with 2 additions and 2 deletions
|
|
@ -221,8 +221,6 @@ int do_test_work_group_suggested_local_size(
|
|||
bool (*skip_cond)(size_t), size_t start, size_t end, size_t incr,
|
||||
cl_ulong max_local_mem_size, size_t global_work_offset[], num_dims dim)
|
||||
{
|
||||
clProgramWrapper scan_program;
|
||||
clKernelWrapper scan_kernel;
|
||||
int err;
|
||||
size_t test_values[] = { 1, 1, 1 };
|
||||
std::string kernel_names[6] = {
|
||||
|
|
@ -244,6 +242,8 @@ int do_test_work_group_suggested_local_size(
|
|||
for (int kernel_num = 0; kernel_num < 6; kernel_num++)
|
||||
{
|
||||
if (max_local_mem_size < local_mem_size[kernel_num]) continue;
|
||||
clProgramWrapper scan_program;
|
||||
clKernelWrapper scan_kernel;
|
||||
// Create the kernel
|
||||
err = create_single_kernel_helper(
|
||||
context, &scan_program, &scan_kernel, 1,
|
||||
|
|
|
|||
Loading…
Reference in a new issue