diff options
author | Christopher Pezley <github@pezley.net> | 2018-09-10 18:36:03 +0200 |
---|---|---|
committer | Charles Harris <charlesr.harris@gmail.com> | 2018-09-10 11:36:03 -0500 |
commit | 530ac095504b903d7f87ff635e81935c7c6ee180 (patch) | |
tree | b443c411c80a35b2e238f8ee3a5b9397842a9c20 | |
parent | 91454d6611021cc1d0d581f7bc81775ca0184517 (diff) | |
download | numpy-530ac095504b903d7f87ff635e81935c7c6ee180.tar.gz |
BUG: Fix memory leak in pyfragments.swg (#11877)
* BUG: Fix memory leak in pyfragments.swg
Make sure to Py_DECREF the Py_ArrayDesc created in the definition of
SWIG_CanCastAsInteger for long and unsigned long.
Fixes #11876
* fixup! BUG: Fix memory leak in pyfragments.swg
-rw-r--r-- | tools/swig/pyfragments.swg | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/tools/swig/pyfragments.swg b/tools/swig/pyfragments.swg index 901e6ed9d..97ca8cf97 100644 --- a/tools/swig/pyfragments.swg +++ b/tools/swig/pyfragments.swg @@ -22,7 +22,6 @@ SWIGINTERN int SWIG_AsVal_dec(long)(PyObject * obj, long * val) { - PyArray_Descr * longDescr = PyArray_DescrNewFromType(NPY_LONG); if (PyInt_Check(obj)) { if (val) *val = PyInt_AsLong(obj); return SWIG_OK; @@ -56,7 +55,9 @@ } %#endif if (!PyArray_IsScalar(obj,Integer)) return SWIG_TypeError; + PyArray_Descr * longDescr = PyArray_DescrNewFromType(NPY_LONG); PyArray_CastScalarToCtype(obj, (void*)val, longDescr); + Py_DECREF(longDescr); return SWIG_OK; } } @@ -74,7 +75,6 @@ SWIGINTERN int SWIG_AsVal_dec(unsigned long)(PyObject *obj, unsigned long *val) { - PyArray_Descr * ulongDescr = PyArray_DescrNewFromType(NPY_ULONG); %#if PY_VERSION_HEX < 0x03000000 if (PyInt_Check(obj)) { @@ -120,7 +120,9 @@ } %#endif if (!PyArray_IsScalar(obj,Integer)) return SWIG_TypeError; + PyArray_Descr * ulongDescr = PyArray_DescrNewFromType(NPY_ULONG); PyArray_CastScalarToCtype(obj, (void*)val, ulongDescr); + Py_DECREF(ulongDescr); return SWIG_OK; } } |