return (PyObject*)myPyType; ...segmentation fault!

elho eh1 at delair.de
Fri Sep 30 05:50:42 EDT 2005


I called a own python type 'PyType' with a c function and returned it 
into my python programm - there it fault.
It is said that the object has a NULL-Pointer when I try to debug it?

Here are the importent snips from my code:


// == test.py =========================================================
.
:
myNewPyType = PyMyExtention.GetValue ("xxx")
# printings for testing
print "...back to python... test.py"
print "pp\t ...PyMyType.PyMyObject:", type(tySdlXml)
//===================================================================/


// == PyMyExtention.c =================================================
.
:
static PyObject* wrap_GetValue (PyObject* self, PyObject* args)
{
     char*      pchXXX;
     if (!PyArg_ParseTuple(args, "s", &pchXXX))
     {
         return 0;
     }

     long llong = CFunktion::CallMe(pchXXX);

     // returning Python-Objekt
     PyObject *pyType = PyMyObject_NewC (llong);
     cout << "cc ..." << ((PyMyType*)pyType)->lAttribute << endl;
     cout << "\t ...proof object-valid pointer?" << (void*)pyType << endl;
     return (PyObject*)pyType;
}
.
:
//===================================================================/


// == PyMyExtention.c =================================================
.
:
typedef struct {
     PyObject_HEAD
     long lAttribute;
} PyMyObject;

static PyObject* PyMyObject_NewC (long lAttribute)
{
     PySDLXMLNode *self;
     PySDLXMLNode *type;

     self = new PySDLXMLNode;
     self->lAttribute = lAttribute;

     return (PyObject*)self;
}

static PyMethodDef PyMyObject_methods[] = {
     {"PyMyObject_NewC", (PyCFunction)PyMyObject_NewC, METH_NOARGS,
     "Create PyMyObject_NewC from C-Code"},
     {NULL}  /* Sentinel */
};

:

static PyTypeObject PySDLXMLNodeType = {
     PyObject_HEAD_INIT(NULL)
     :
};
//===================================================================/


// :::   output  ::::::::::::::::::::::::::::::::::::::::::::::::::::

cc ...135603272
     t ...proof object-valid pointer?: 0x8165940
...back to python... test.py
Segmentation fault

//===================================================================/


...you see: It returns to python but over there the object is something 
bad. So what is wrong?



More information about the Python-list mailing list