one more update...

if I remove PyMem_Free and free(...) ...so no memory clean up...I can
still only call doStuff 4 times, the 5th attemp crashes Python.

Java and Swing wrote:
> update:
> if I use C's free(result), free(a) free(b) instead of PyMem_Free...I
> only get one successfuly use/call of doStuff.
>
> i.e.
> // this works
> doStuff(...)
>
> // python crashes here
> doStuff(...)
>
> Java and Swing wrote:
> > static PyObject *wrap_doStuff(PyObject *self, PyObject *args) {
> >     // this will store the result in a Python object
> >     PyObject *finalResult;
> >
> >     // get arguments from Python
> >     char *result = 0;
> >     char *in= 0;
> >             char *aString = 0;
> >     char *bString = 0;
> >     MY_NUM *a;
> >     MY_NUM *b;
> >     int ok = PyArg_ParseTuple(args, "sss", &in, &aString, &bString);
> >     if (!ok) return 0;
> >
> >     // do work to get a and b
> >     // count - returns an int;  GetVal - returns a char *
> >     a = GetVal(aString, count(aString, ","));
> >     b = GetVal(bString, count(bString, ","));
> >
> >     // make function call, which returns a char *
> >     result = doStuff(in, a, b);
> >
> >     // save result in Python string
> >     finalResult = PyString_FromString(result);
> >
> >     // free memory
> >     PyMem_Free(result);
> >     PyMem_Free(a);
> >     PyMem_Free(b);
> >
> >     // return the result as a Python string
> >     return finalResult;
> > }
> >
> > ...from python I can call this function 4 times...works fine.  WHen I
> > call it for the fifth time python.exe crashes.  im thinking some memory
> > problem in the wrapper function perhaps...but I am not sure.  The
> > actually C function, doStuff can be called 5, 6,7...N times without a
> > problem
> > so i know its gotta be my wrapper.
> > 
> > Any ideas?  Thanks!

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

Reply via email to