clover: Fix clBuildProgram piglit regression
authorTom Stellard <thomas.stellard@amd.com>
Mon, 3 Nov 2014 14:14:01 +0000 (09:14 -0500)
committerTom Stellard <thomas.stellard@amd.com>
Mon, 3 Nov 2014 15:35:07 +0000 (10:35 -0500)
Should trigger CL_INVALID_VALUE if device_list is NULL and num_devices
is greater than zero.

Introduced by e5468dfa523be2a7a0d04bb9efcf8ae780957563

Reported by: EdB

Reviewed-by: Francisco Jerez <currojerez@riseup.net>
src/gallium/state_trackers/clover/api/program.cpp

index 64c4a43f4b3eac5a8066c19ac353714ec0abf2c0..3a6c05461537f8dd47794c60fe766e3f5d04852f 100644 (file)
@@ -27,7 +27,7 @@ using namespace clover;
 
 namespace {
    void validate_build_program_common(const program &prog, cl_uint num_devs,
-                                      const ref_vector<device> &devs,
+                                      const cl_device_id *d_devs,
                                       void (*pfn_notify)(cl_program, void *),
                                       void *user_data) {
 
@@ -39,7 +39,7 @@ namespace {
 
       if (any_of([&](const device &dev) {
                return !count(dev, prog.context().devices());
-            }, devs))
+            }, objs<allow_empty_tag>(d_devs, num_devs)))
          throw error(CL_INVALID_DEVICE);
    }
 }
@@ -177,7 +177,7 @@ clBuildProgram(cl_program d_prog, cl_uint num_devs,
                 ref_vector<device>(prog.context().devices()));
    auto opts = (p_opts ? p_opts : "");
 
-   validate_build_program_common(prog, num_devs, devs, pfn_notify, user_data);
+   validate_build_program_common(prog, num_devs, d_devs, pfn_notify, user_data);
 
    prog.build(devs, opts);
    return CL_SUCCESS;
@@ -200,7 +200,7 @@ clCompileProgram(cl_program d_prog, cl_uint num_devs,
    auto opts = (p_opts ? p_opts : "");
    header_map headers;
 
-   validate_build_program_common(prog, num_devs, devs, pfn_notify, user_data);
+   validate_build_program_common(prog, num_devs, d_devs, pfn_notify, user_data);
 
    if (bool(num_headers) != bool(header_names))
       throw error(CL_INVALID_VALUE);