X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/185d7c3ee4c6e4a9ddaf811ae38e57d68a0fdff3..9fd9e47a93dfcdd99c2722e288a0f28a51ce6f5f:/wxPython/src/libpy.c?ds=sidebyside diff --git a/wxPython/src/libpy.c b/wxPython/src/libpy.c index 7f05d84e59..1116e677df 100644 --- a/wxPython/src/libpy.c +++ b/wxPython/src/libpy.c @@ -317,11 +317,11 @@ SWIG_GetPtr(char *c, void **ptr, char *t) if (*c != '_') { *ptr = (void *) 0; if (strcmp(c,"NULL") == 0) return (char *) 0; - else c; + else return c; } c++; /* Extract hex value from pointer */ - while (d = *c) { + while ((d = *c) != 0) { if ((d >= '0') && (d <= '9')) p = (p << 4) + (d - '0'); else if ((d >= 'a') && (d <= 'f')) @@ -362,7 +362,7 @@ SWIG_GetPtr(char *c, void **ptr, char *t) sp = &SwigPtrTable[start]; /* Try to find a match */ - while (start <= end) { + while (start < end) { /* was "<=" --robin */ if (strncmp(t,sp->name,sp->len) == 0) { name = sp->name; len = sp->len; @@ -405,13 +405,34 @@ SWIG_GetPtrObj(PyObject *obj, void **ptr, char *type) { if (!PyString_Check(obj)) { if (!PyInstance_Check(obj) || !(sobj = PyObject_GetAttrString(obj,"this"))) return ""; + // PyObject_GetAttrString increases sobj refcout ! + Py_DECREF(sobj); } str = PyString_AsString(sobj); + if (str == NULL) + return ""; return SWIG_GetPtr(str,ptr,type); } + #ifdef __cplusplus } #endif + + + + + + + + + + + + + + + +