diff --git a/src/wrapper/wrap_cl.hpp b/src/wrapper/wrap_cl.hpp
index 9e4c141c1b271007266fe48feffce4f991410fd1..5c9ddd6e543799bbbad41489eccd14c7332bfc75 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)