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