From ad9c85742769d6fe84def7c9bfa4525da8e33c6a Mon Sep 17 00:00:00 2001 From: Alejandro Saucedo Date: Fri, 7 May 2021 16:54:08 +0100 Subject: [PATCH] Updated memory ownership of sharedptr of Tensor to also be refcounted by numpy array returned in data --- python/src/main.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/python/src/main.cpp b/python/src/main.cpp index 84d874594..e05e19320 100644 --- a/python/src/main.cpp +++ b/python/src/main.cpp @@ -95,18 +95,17 @@ PYBIND11_MODULE(kp, m) { py::class_>(m, "Tensor", DOC(kp, Tensor)) .def("data", [](kp::Tensor& self) { // Non-owning container exposing the underlying pointer - py::str dummyDataOwner; // Explicitly request data to not be owned by np switch (self.dataType()) { case kp::Tensor::TensorDataTypes::eFloat: - return py::array(self.size(), self.data(), dummyDataOwner); + return py::array(self.size(), self.data(), py::cast(&self)); case kp::Tensor::TensorDataTypes::eUnsignedInt: - return py::array(self.size(), self.data(), dummyDataOwner); + return py::array(self.size(), self.data(), py::cast(&self)); case kp::Tensor::TensorDataTypes::eInt: - return py::array(self.size(), self.data(), dummyDataOwner); + return py::array(self.size(), self.data(), py::cast(&self)); case kp::Tensor::TensorDataTypes::eDouble: - return py::array(self.size(), self.data(), dummyDataOwner); + return py::array(self.size(), self.data(), py::cast(&self)); case kp::Tensor::TensorDataTypes::eBool: - return py::array(self.size(), self.data(), dummyDataOwner); + return py::array(self.size(), self.data(), py::cast(&self)); default: throw std::runtime_error("Kompute Python data type not supported"); }