summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorChristopher Pezley <github@pezley.net>2018-09-10 18:36:03 +0200
committerCharles Harris <charlesr.harris@gmail.com>2018-09-10 11:36:03 -0500
commit530ac095504b903d7f87ff635e81935c7c6ee180 (patch)
treeb443c411c80a35b2e238f8ee3a5b9397842a9c20 /tools
parent91454d6611021cc1d0d581f7bc81775ca0184517 (diff)
downloadnumpy-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
Diffstat (limited to 'tools')
-rw-r--r--tools/swig/pyfragments.swg6
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;
}
}