--- C:\Development\Projects\Work\amira\product\include\arch-Win64VC8\CL\cl.hpp.orig 2010-11-26 12:37:00.000000000 +-0100 +++ C:\Development\Projects\Work\amira\product\include\arch-Win64VC8\CL\cl.hpp 2010-12-29 00:39:55.000000000 +-0100 @@ -717,23 +717,37 @@ return CL_SUCCESS; } }; // Specialized for getInfo template -struct GetInfoHelper > +struct GetInfoHelper > > { static cl_int - get(Func f, cl_uint name, VECTOR_CLASS* param) + get(Func f, cl_uint name, VECTOR_CLASS< VECTOR_CLASS >* param) { - cl_uint err = f(name, param->size() * sizeof(char *), &(*param)[0], NULL); - if (err != CL_SUCCESS) { - return err; - } - - return CL_SUCCESS; + VECTOR_CLASS< ::size_t> sizes; + cl_int err = GetInfoHelper >::get(f, CL_PROGRAM_BINARY_SIZES, &sizes); + if (err != CL_SUCCESS) { + return err; + } + + param->resize(sizes.size()); + + VECTOR_CLASS values(param->size()); + for (::size_t i = 0; isize(); ++i) { + (*param)[i].resize(sizes[i]); + values[i]=&(*param)[i].front(); + } + + err = f(name, values.size() * sizeof(unsigned char *), &values[0], NULL); + if (err != CL_SUCCESS) { + return err; + } + + return CL_SUCCESS; } }; // Specialized GetInfoHelper for STRING_CLASS params template struct GetInfoHelper @@ -872,13 +886,13 @@ F(cl_program_info, CL_PROGRAM_REFERENCE_COUNT, cl_uint) \ F(cl_program_info, CL_PROGRAM_CONTEXT, cl::Context) \ F(cl_program_info, CL_PROGRAM_NUM_DEVICES, cl_uint) \ F(cl_program_info, CL_PROGRAM_DEVICES, VECTOR_CLASS) \ F(cl_program_info, CL_PROGRAM_SOURCE, STRING_CLASS) \ F(cl_program_info, CL_PROGRAM_BINARY_SIZES, VECTOR_CLASS< ::size_t>) \ - F(cl_program_info, CL_PROGRAM_BINARIES, VECTOR_CLASS) \ + F(cl_program_info, CL_PROGRAM_BINARIES, VECTOR_CLASS< VECTOR_CLASS >) \ \ F(cl_program_build_info, CL_PROGRAM_BUILD_STATUS, cl_build_status) \ F(cl_program_build_info, CL_PROGRAM_BUILD_OPTIONS, STRING_CLASS) \ F(cl_program_build_info, CL_PROGRAM_BUILD_LOG, STRING_CLASS) \ \ F(cl_kernel_info, CL_KERNEL_FUNCTION_NAME, STRING_CLASS) \