numpy.h: fixed a leak, added some comments to buffer_info
diff --git a/include/pybind11/common.h b/include/pybind11/common.h
index f00f16b..ad55be6 100644
--- a/include/pybind11/common.h
+++ b/include/pybind11/common.h
@@ -143,12 +143,13 @@
/// Information record describing a Python buffer object
struct buffer_info {
- void *ptr;
- size_t itemsize, size;
- std::string format; // for dense contents, this should be set to format_descriptor<T>::value
- int ndim;
- std::vector<size_t> shape;
- std::vector<size_t> strides;
+ void *ptr; // Pointer to the underlying storage
+ size_t itemsize; // Size of individual items in bytes
+ size_t size; // Total number of entries
+ std::string format; // For homogeneous buffers, this should be set to format_descriptor<T>::value
+ int ndim; // Number of dimensions
+ std::vector<size_t> shape; // Shape of the tensor (1 entry per dimension)
+ std::vector<size_t> strides; // Number of entries between adjacent entries (for each per dimension)
buffer_info(void *ptr, size_t itemsize, const std::string &format, int ndim,
const std::vector<size_t> &shape, const std::vector<size_t> &strides)
diff --git a/include/pybind11/numpy.h b/include/pybind11/numpy.h
index 11bb47f..2365a60 100644
--- a/include/pybind11/numpy.h
+++ b/include/pybind11/numpy.h
@@ -128,9 +128,11 @@
return nullptr;
API &api = lookup_api();
PyObject *descr = api.PyArray_DescrFromType_(npy_format_descriptor<T>::value);
- return api.PyArray_FromAny_(ptr, descr, 0, 0,
- API::NPY_C_CONTIGUOUS_ | API::NPY_ENSURE_ARRAY_ |
- API::NPY_ARRAY_FORCECAST_, nullptr);
+ PyObject *result = api.PyArray_FromAny_(
+ ptr, descr, 0, 0, API::NPY_C_CONTIGUOUS_ | API::NPY_ENSURE_ARRAY_
+ | API::NPY_ARRAY_FORCECAST_, nullptr);
+ Py_DECREF(ptr);
+ return result;
}
};