Fix reference counting errors in registerNewType

pull/23350/head
Spike 2 years ago
parent 22a52766dc
commit 95f087cd0b
  1. 1
      modules/python/src2/cv2.cpp
  2. 2
      modules/python/src2/pycompat.hpp

@ -284,6 +284,7 @@ static bool init_submodule(PyObject * root, const char * name, PyMethodDef * met
static inline
bool registerTypeInModuleScope(PyObject* module, const char* type_name, PyObject* type_obj)
{
Py_INCREF(type_obj); /// Give PyModule_AddObject a reference to steal.
if (PyModule_AddObject(module, type_name, type_obj) < 0)
{
PyErr_Format(PyExc_ImportError,

@ -338,8 +338,10 @@ PyObject* pyopencv_from(const TYPE& src)
if (!registerNewType(m, #EXPORT_NAME, (PyObject*)pyopencv_##CLASS_ID##_TypePtr, SCOPE)) \
{ \
printf("Failed to register a new type: " #EXPORT_NAME ", base (" #BASE ") in " SCOPE " \n"); \
Py_DECREF(pyopencv_##CLASS_ID##_TypePtr); \
ERROR_HANDLER; \
} \
Py_DECREF(pyopencv_##CLASS_ID##_TypePtr); \
}
// Debug module load:

Loading…
Cancel
Save