Move allocations out of rpmps object init method
- tp_init can be called several times, allocating from there leaks memory - tp_init gets called automatically on object creation, dont call manually - nothing to initialize for rpmps...
This commit is contained in:
parent
4c85c7e605
commit
00d683ce88
|
@ -160,24 +160,6 @@ static PyMappingMethods rpmps_as_mapping = {
|
||||||
(binaryfunc) rpmps_subscript, /* mp_subscript */
|
(binaryfunc) rpmps_subscript, /* mp_subscript */
|
||||||
};
|
};
|
||||||
|
|
||||||
/** \ingroup py_c
|
|
||||||
*/
|
|
||||||
static int rpmps_init(rpmpsObject * s, PyObject *args, PyObject *kwds)
|
|
||||||
{
|
|
||||||
char * kwlist[] = {NULL};
|
|
||||||
|
|
||||||
if (_rpmps_debug < 0)
|
|
||||||
fprintf(stderr, "*** rpmps_init(%p,%p,%p)\n", s, args, kwds);
|
|
||||||
|
|
||||||
if (!PyArg_ParseTupleAndKeywords(args, kwds, ":rpmps_init", kwlist))
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
s->ps = rpmpsCreate();
|
|
||||||
s->psi = NULL;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** \ingroup py_c
|
/** \ingroup py_c
|
||||||
*/
|
*/
|
||||||
static void rpmps_free(rpmpsObject * s)
|
static void rpmps_free(rpmpsObject * s)
|
||||||
|
@ -195,11 +177,8 @@ static PyObject * rpmps_new(PyTypeObject * subtype, PyObject *args, PyObject *kw
|
||||||
{
|
{
|
||||||
rpmpsObject * s = (void *) PyObject_New(rpmpsObject, subtype);
|
rpmpsObject * s = (void *) PyObject_New(rpmpsObject, subtype);
|
||||||
|
|
||||||
/* Perform additional initialization. */
|
s->ps = rpmpsCreate();
|
||||||
if (rpmps_init(s, args, kwds) < 0) {
|
s->psi = NULL;
|
||||||
rpmps_free(s);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_rpmps_debug)
|
if (_rpmps_debug)
|
||||||
fprintf(stderr, "%p ++ ps %p\n", s, s->ps);
|
fprintf(stderr, "%p ++ ps %p\n", s, s->ps);
|
||||||
|
@ -250,7 +229,7 @@ PyTypeObject rpmps_Type = {
|
||||||
0, /* tp_descr_get */
|
0, /* tp_descr_get */
|
||||||
0, /* tp_descr_set */
|
0, /* tp_descr_set */
|
||||||
0, /* tp_dictoffset */
|
0, /* tp_dictoffset */
|
||||||
(initproc) rpmps_init, /* tp_init */
|
0, /* tp_init */
|
||||||
0, /* tp_alloc */
|
0, /* tp_alloc */
|
||||||
(newfunc) rpmps_new, /* tp_new */
|
(newfunc) rpmps_new, /* tp_new */
|
||||||
(freefunc) rpmps_free, /* tp_free */
|
(freefunc) rpmps_free, /* tp_free */
|
||||||
|
|
Loading…
Reference in New Issue