From 843f99efcf673dfd4937db0f2ed1c973880e876b Mon Sep 17 00:00:00 2001 From: tkorvola Date: Tue, 7 Feb 2017 13:39:18 +0200 Subject: [PATCH] Plug leaks from PySequence_GetItem. One needs to be careful and RTFM: PySequence_GetItem returns a new reference but, e.g., PyDict_GetItem does not. Change-Id: I93f08163a2bbf66da2966044c7bfc7abcd140bbd --- .../jnipython.dll | Bin 35328 -> 67584 bytes .../src/sclpy.c | 13 ++++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/org.simantics.pythonlink.win32.x86_64/jnipython.dll b/org.simantics.pythonlink.win32.x86_64/jnipython.dll index bb0a05aae18c761e217ad82a9f77104dc8cbff9e..c2f62cb7f5de3bbfa0d808fa900bb308711c0fab 100644 GIT binary patch literal 67584 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 literal 35328 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 zxC752ly62_QHD7{z76SPcT$+;SetObjectArrayElement(env, array, i, value); } else { + Py_DECREF(item); throwPythonException(env, "List item not a string"); return NULL; } @@ -711,10 +713,12 @@ jdoubleArray pythonSequenceAsDoubleArray(JNIEnv *env, PyObject *seq) { for (i = 0; i < jlen; i++) { PyObject *item = PySequence_GetItem(seq, i); if (PyFloat_Check(item)) { - double value = PyFloat_AsDouble(item); + jdouble value = PyFloat_AsDouble(item); + Py_DECREF(item); (*env)->SetDoubleArrayRegion(env, array, i, 1, &value); } else { + Py_DECREF(item); throwPythonException(env, "List item not a floating point value"); return NULL; } @@ -754,6 +758,7 @@ jobjectArray pythonSequenceAsObjectArray(JNIEnv *env, PyObject *seq) { for (i = 0; i < jlen; i++) { PyObject *item = PySequence_GetItem(seq, i); jobject object = pythonObjectAsObject(env, item); + Py_DECREF(item); (*env)->SetObjectArrayElement(env, array, i, object); } @@ -771,9 +776,11 @@ jbooleanArray pythonSequenceAsBooleanArray(JNIEnv *env, PyObject *seq) { PyObject *item = PySequence_GetItem(seq, i); if (PyBool_Check(item)) { jboolean value = item == Py_True; + Py_DECREF(item); (*env)->SetBooleanArrayRegion(env, array, i, 1, &value); } else { + Py_DECREF(item); throwPythonException(env, "List item not a boolean"); return NULL; } @@ -793,9 +800,11 @@ jintArray pythonSequenceAsIntegerArray(JNIEnv *env, PyObject *seq) { PyObject *item = PySequence_GetItem(seq, i); if (PyLong_Check(item)) { jint value = PyLong_AsLong(item); + Py_DECREF(item); (*env)->SetIntArrayRegion(env, array, i, 1, &value); } else { + Py_DECREF(item); throwPythonException(env, "List item not an integer"); return NULL; } @@ -815,9 +824,11 @@ jlongArray pythonSequenceAsLongArray(JNIEnv *env, PyObject *seq) { PyObject *item = PySequence_GetItem(seq, i); if (PyLong_Check(item)) { jlong value = PyLong_AsLongLong(item); + Py_DECREF(item); (*env)->SetLongArrayRegion(env, array, i, 1, &value); } else { + Py_DECREF(item); throwPythonException(env, "List item not an integer"); return NULL; } -- 2.47.1