"Donnie Leen" <[EMAIL PROTECTED]> writes: > I wrote a program to test calling c function from python code embedding in c > as following, it cause error after running a while(about 398 circle). I > test it in msvc6, python2.3, windows 2k, could anyone tell me why this > happened since i just work according to the document? Thanks first. > > Donnie Leen > > > source code: > > > #include <Python.h> > > static PyObject* pymyfun( PyObject* self, PyObject* args ) > { > return Py_None; // do nothing
You forgot an Py_INCREF here: Py_INCREF(Py_None); return Py_None; // do nothing > } > static PyMethodDef emb_methods[] = { > { "fun", pymyfun, METH_VARARGS, "doc." }, > {NULL, NULL, 0, NULL} > }; > > void main( ) > { > Py_Initialize( ); > > PyObject* r = Py_InitModule( "mymodule", emb_methods ); > PyRun_SimpleString( "import mymodule" ); > while ( 1 ) > { > // error occur after 398 loops here > PyRun_SimpleString( "mymodule.fun( 'testest' )" ); > } > > Py_Finalize(); > } -- http://mail.python.org/mailman/listinfo/python-list