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<py_buffer_wrapper> retained_buf_obj;
     if (buffer.ptr() != Py_None)
     {
+      retained_buf_obj = std::auto_ptr<py_buffer_wrapper>(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<py_buffer_wrapper> retained_buf_obj;
     if (buffer.ptr() != Py_None)
     {
+      retained_buf_obj = std::auto_ptr<py_buffer_wrapper>(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)
       { }