diff --git a/doc/_templates/layout.html b/doc/_templates/layout.html
index 0fed238faf1fc27457ad8672017577f055e7edf0..400e7ec1d49677537aff6bf744e2803ef5c01e9e 100644
--- a/doc/_templates/layout.html
+++ b/doc/_templates/layout.html
@@ -1,2 +1,2 @@
{% extends "!layout.html" %}
-{% set css_files = css_files + ['_static/akdoc.css']%}
+{% set bootswatch_css_custom = ['_static/akdoc.css']%}
diff --git a/pyopencl/compyte b/pyopencl/compyte
index c5e80622ee2dfd129d56886098a5ad532c54cf09..2293b43ecfadfd4ea2adc9266c8ec18f2ae0ce11 160000
--- a/pyopencl/compyte
+++ b/pyopencl/compyte
@@ -1 +1 @@
-Subproject commit c5e80622ee2dfd129d56886098a5ad532c54cf09
+Subproject commit 2293b43ecfadfd4ea2adc9266c8ec18f2ae0ce11
diff --git a/src/wrapper/wrap_cl.hpp b/src/wrapper/wrap_cl.hpp
index 5eb891645bca50485fe0a80a3c674daef2e35681..af524fd9b7bdb3d984352ce10c2fb63227ad1a88 100644
--- a/src/wrapper/wrap_cl.hpp
+++ b/src/wrapper/wrap_cl.hpp
@@ -2420,6 +2420,8 @@ namespace pyopencl
std::auto_ptr retained_buf_obj;
if (buffer.ptr() != Py_None)
{
+ retained_buf_obj = std::auto_ptr(new py_buffer_wrapper);
+
int py_buf_flags = PyBUF_ANY_CONTIGUOUS;
if ((flags & CL_MEM_USE_HOST_PTR)
&& ((flags & CL_MEM_READ_WRITE)
@@ -2564,6 +2566,8 @@ namespace pyopencl
std::auto_ptr retained_buf_obj;
if (buffer.ptr() != Py_None)
{
+ retained_buf_obj = std::auto_ptr(new py_buffer_wrapper);
+
int py_buf_flags = PyBUF_ANY_CONTIGUOUS;
if ((flags & CL_MEM_USE_HOST_PTR)
&& ((flags & CL_MEM_READ_WRITE)
@@ -3586,7 +3590,16 @@ namespace pyopencl
#ifdef PYOPENCL_USE_NEW_BUFFER_INTERFACE
py_buffer_wrapper buf_wrapper;
- buf_wrapper.get(py_buffer.ptr(), PyBUF_ANY_CONTIGUOUS);
+ try
+ {
+ buf_wrapper.get(py_buffer.ptr(), PyBUF_ANY_CONTIGUOUS);
+ }
+ catch (py::error_already_set)
+ {
+ PyErr_Clear();
+ throw error("Kernel.set_arg", CL_INVALID_VALUE,
+ "invalid kernel argument");
+ }
buf = buf_wrapper.m_buf.buf;
len = buf_wrapper.m_buf.len;
@@ -3889,7 +3902,7 @@ namespace pyopencl
class gl_buffer : public memory_object
{
public:
- gl_buffer(cl_mem mem, bool retain, py::object *hostbuf=0)
+ gl_buffer(cl_mem mem, bool retain, hostbuf_t hostbuf=hostbuf_t())
: memory_object(mem, retain, hostbuf)
{ }
};
@@ -3900,7 +3913,7 @@ namespace pyopencl
class gl_renderbuffer : public memory_object
{
public:
- gl_renderbuffer(cl_mem mem, bool retain, py::object *hostbuf=0)
+ gl_renderbuffer(cl_mem mem, bool retain, hostbuf_t hostbuf=hostbuf_t())
: memory_object(mem, retain, hostbuf)
{ }
};
@@ -3911,7 +3924,7 @@ namespace pyopencl
class gl_texture : public image
{
public:
- gl_texture(cl_mem mem, bool retain, py::object *hostbuf=0)
+ gl_texture(cl_mem mem, bool retain, hostbuf_t hostbuf=hostbuf_t())
: image(mem, retain, hostbuf)
{ }