Fix memory leak in PLySequence_ToJsonbValue()

PyObject returned from PySequence_GetItem() is not released.  Similar code in PLyMapping_ToJsonbValue() is correct, because according to Python documentation
PyList_GetItem() and PyTuple_GetItem() return a borrowed reference while
PySequence_GetItem() returns new reference.  contrib/jsonb_plpython is new
in PostgreSQL 11, no backpatch is needed.

Author: Nikita Glukhov
Discussion: https://postgr.es/m/6001af16-b242-2527-bc7e-84b8a959163b%40postgrespro.ru
This commit is contained in:
Alexander Korotkov 2018-06-15 15:01:46 +03:00
parent 969274d813
commit dad8bed04a
1 changed files with 2 additions and 0 deletions

View File

@ -308,6 +308,8 @@ PLySequence_ToJsonbValue(PyObject *obj, JsonbParseState **jsonb_state)
PyObject *value = PySequence_GetItem(obj, i);
(void) PLyObject_ToJsonbValue(value, jsonb_state, true);
Py_XDECREF(value);
}
return pushJsonbValue(jsonb_state, WJB_END_ARRAY, NULL);