From 7f0d90a525b2da5f54859ae8dcccd0079ca9519f Mon Sep 17 00:00:00 2001 From: Dmitry Kurtaev Date: Mon, 16 Mar 2020 15:49:37 +0300 Subject: [PATCH] Fix memory leak in Python custom dnn layers --- modules/dnn/misc/python/pyopencv_dnn.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/dnn/misc/python/pyopencv_dnn.hpp b/modules/dnn/misc/python/pyopencv_dnn.hpp index 69c14240c3..d729cd8b97 100644 --- a/modules/dnn/misc/python/pyopencv_dnn.hpp +++ b/modules/dnn/misc/python/pyopencv_dnn.hpp @@ -160,12 +160,13 @@ public: PyObject* args = pyopencv_from(inputs); PyObject* res = PyObject_CallMethodObjArgs(o, PyString_FromString("forward"), args, NULL); Py_DECREF(args); - PyGILState_Release(gstate); if (!res) CV_Error(Error::StsNotImplemented, "Failed to call \"forward\" method"); std::vector pyOutputs; CV_Assert(pyopencv_to(res, pyOutputs, ArgInfo("", 0))); + Py_DECREF(res); + PyGILState_Release(gstate); CV_Assert(pyOutputs.size() == outputs.size()); for (size_t i = 0; i < outputs.size(); ++i)