[Piglit] [PATCH 4/5] cl: Fix using pointer as value

Jan Vesely jan.vesely at rutgers.edu
Wed Dec 3 12:53:31 PST 2014


piglit_cl_get_device_info returns pointer even for integral values.
Fix mem leaks while at it.

Signed-off-by: Jan Vesely <jan.vesely at rutgers.edu>
---
 tests/util/piglit-framework-cl.c | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/tests/util/piglit-framework-cl.c b/tests/util/piglit-framework-cl.c
index 241dd42..9a7efef 100644
--- a/tests/util/piglit-framework-cl.c
+++ b/tests/util/piglit-framework-cl.c
@@ -559,27 +559,37 @@ bool piglit_cl_framework_check_local_work_size(
 {
 	unsigned i;
 	size_t workgroup_size = 1;
-	size_t max_workgroup_size = piglit_cl_get_device_info(device_id,
+	size_t *max_workgroup_size = piglit_cl_get_device_info(device_id,
 						CL_DEVICE_MAX_WORK_GROUP_SIZE);
 	size_t *max_workitem_sizes = piglit_cl_get_device_info(device_id,
 						CL_DEVICE_MAX_WORK_ITEM_SIZES);
+	bool ret = true;
 
 	if (!local_work_size) {
-		return true;
+		goto out;
+	}
+
+	if (!max_workgroup_size || !max_workitem_sizes) {
+		ret = false;
+		goto out;
 	}
 
 	for (i = 0; i < 3; i++) {
 		size_t local_size = local_work_size[i];
 		if (local_size > max_workitem_sizes[i]) {
-			return false;
+			ret = false;
+			goto out;
 		}
 		if (local_size > 0) {
 			workgroup_size *= local_size;
 		}
 	}
 
-	if (workgroup_size > max_workgroup_size) {
-		return false;
+	if (workgroup_size > *max_workgroup_size) {
+		ret = false;
 	}
-	return true;
+out:
+	free(max_workgroup_size);
+	free(max_workitem_sizes);
+	return ret;
 }
-- 
1.9.3



More information about the Piglit mailing list