[C-API] Invalide Objekte erkennem

Python in C/C++ embedden, C-Module, ctypes, Cython, SWIG, SIP etc sind hier richtig.
Antworten
theliquidwave
User
Beiträge: 221
Registriert: Sonntag 1. Juni 2008, 09:08

Sonntag 6. Juni 2010, 18:59

Hallo.
Wenn ich beispielsweise folgenden Code verwende:

Code: Alles auswählen

PyObject *pyArg1;
PyObject *pyArg2;
PyObject *pyArg3;

if (!PyArg_ParseTuple(pyArgs, "O|OO", &pyArg1, &pyArg2, &pyArg3))
{
    return (PyObject*)NULL;
}

// pyArg1, pyArg2 und pyArg3 haben hier alle eine Adresse
// wenn ich jedoch z.B. den 2. und 3. Parameter nicht übergebe, crasht folgendes:
if (PyList_Check(pyArg2))
{
    // crasht, pyArg2 ist aber nicht NULL
}
Wie bekomme ich nun heraus, ob das dahintersteckende PyObject* auch wirklich valid ist?

Gruß
Grüßle.
tordmor
User
Beiträge: 100
Registriert: Donnerstag 20. November 2008, 10:29
Wohnort: Stuttgart

Sonntag 6. Juni 2010, 21:32

Vermutlich, in dem Du die Pointer mit NULL initialisierst.
http://www.felix-benner.com
theliquidwave
User
Beiträge: 221
Registriert: Sonntag 1. Juni 2008, 09:08

Montag 7. Juni 2010, 01:20

Owned :mrgreen:
Ok, das war nun wirklich dumm...

Gruß & Danke
Grüßle.
Antworten