Whan I run the following function, I see 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