Hi All, A C library I'm using has a number of functions that all require a struct as an argument. The example module shows how to make a new Python Object from C code and I've seen other posts that recommend this way of doing it.
In this case though, it would seem easier if I could create the object in the Python code. This would require storing a pointer to an instance of the struct until a certain function is called. I can get the pointer into the python code, but whenever I try to use it to call another function, the module segfaults. Can anyone suggest why this is? static PyObject * libpyq_PQconnectdb(PyObject *self, PyObject *args) { PGconn *conn = PyMem_New(PGconn, sizeof(PGconn *)); conn = (PGconn *)PQconnectdb((const char*) PyString_AS_STRING(args)); printf("%p", conn); return PyLong_FromVoidPtr(conn) ; } static PyObject * libpyq_PQfinish(PyObject *self, PyObject *args) { printf("%p", args); return 1; } >>> import libpyq #works fine >>> conn = libpyq.PQconnectdb #conn now a pointer >>> libpyq.PQfinish(conn) #segfaults I'm new to C but relatively experienced with Python. I have a sneaky suspiscion there's a good reason for not doing it this way but I haven't seen a good explanation of why not yet. If you know one, please tell me. Thanks, Andy -- http://mail.python.org/mailman/listinfo/python-list