When I run the following function, I seem to have a mem leak, a 20 mb
of memory
is allocated and is not freed. Here is the code I run:

>>> import esauth
>>> for i in range(1000000):

...     ss = esauth.penc('sumer')
...
>>> for i in range(1000000):

...     ss = esauth.penc('sumer')
...

And here is the penc() function.

static PyObject *
penc(PyObject *self, PyObject *args)
{
        unsigned char *s= NULL;
        unsigned char *buf = NULL;
        PyObject * result = NULL;
        unsigned int v,len,i = 0;

        if (!PyArg_ParseTuple(args, "s#", &s, &len))
        return NULL;

        buf = strdup(s);
        if (!buf) {
                PyErr_SetString(PyExc_MemoryError,
                        "Out of memory: strdup failed");
                return NULL;
        }

        /*string manipulation*/

        result = PyString_FromString(buf);
        free(buf);
        return result;

}

Am I doing something wrong?

Thanks,
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to