File: | source/IoPython.c |
Function: | convertIo |
Error: | ob_refcnt of return value is 1 too high |
98 */
99 PyObject *convertIo(IoObject *self, IoObject *obj) {
100 PyObject *ret;
101 if(ISNUMBER(obj)) {
when considering range: -0x80000000 <= value <= -1
taking True path
102 ret = PyFloat_FromDouble(CNUMBER(obj));
when treating unknown struct IoObject * from source/IoPython.c:99 as non-NULL
when treating unknown struct IoObjectData * from source/IoPython.c:102 as non-NULL
when PyFloat_FromDouble() succeeds
PyFloatObject allocated at: ret = PyFloat_FromDouble(CNUMBER(obj));
ob_refcnt is now refs: 1 + N where N >= 0
103 Py_INCREF(ret);
ob_refcnt is now refs: 2 + N where N >= 0
104 return ret;
105 }
106 if(ISSEQ(obj)) {
107 ret = PyString_FromString(CSTRING(obj));
108 Py_INCREF(ret);
109 return ret;
110 }
111 printf("Unable to convert parameter to python.\n");
112 return NULL;
113 }
ob_refcnt of return value is 1 too high
was expecting final ob_refcnt to be N + 1 (for some unknown N)
due to object being referenced by: return value
but final ob_refcnt is N + 2
found 3 similar trace(s) to this
File: | source/IoPython.c |
Function: | convertIo |
Error: | dereferencing NULL (ret->ob_refcnt) at source/IoPython.c:103 |
98 */
99 PyObject *convertIo(IoObject *self, IoObject *obj) {
100 PyObject *ret;
101 if(ISNUMBER(obj)) {
when considering range: -0x80000000 <= value <= -1
taking True path
102 ret = PyFloat_FromDouble(CNUMBER(obj));
when treating unknown struct IoObject * from source/IoPython.c:99 as non-NULL
when treating unknown struct IoObjectData * from source/IoPython.c:102 as non-NULL
when PyFloat_FromDouble() fails
103 Py_INCREF(ret);
dereferencing NULL (ret->ob_refcnt) at source/IoPython.c:103
found 1 similar trace(s) to this
104 return ret;
105 }
106 if(ISSEQ(obj)) {
107 ret = PyString_FromString(CSTRING(obj));
108 Py_INCREF(ret);
109 return ret;
110 }
111 printf("Unable to convert parameter to python.\n");
112 return NULL;
113 }
File: | source/IoPython.c |
Function: | convertIo |
Error: | dereferencing NULL (ret->ob_refcnt) at source/IoPython.c:108 |
98 */
99 PyObject *convertIo(IoObject *self, IoObject *obj) {
100 PyObject *ret;
101 if(ISNUMBER(obj)) {
when considering value == (int)0 from source/IoPython.c:101
taking False path
102 ret = PyFloat_FromDouble(CNUMBER(obj));
103 Py_INCREF(ret);
104 return ret;
105 }
106 if(ISSEQ(obj)) {
when considering range: -0x80000000 <= value <= -1
taking True path
107 ret = PyString_FromString(CSTRING(obj));
when treating unknown char * from source/IoPython.c:107 as non-NULL
when PyString_FromString() fails
108 Py_INCREF(ret);
dereferencing NULL (ret->ob_refcnt) at source/IoPython.c:108
found 1 similar trace(s) to this
109 return ret;
110 }
111 printf("Unable to convert parameter to python.\n");
112 return NULL;
113 }
File: | source/IoPython.c |
Function: | convertIo |
Error: | returning (PyObject*)NULL without setting an exception |
98 */
99 PyObject *convertIo(IoObject *self, IoObject *obj) {
100 PyObject *ret;
101 if(ISNUMBER(obj)) {
when considering value == (int)0 from source/IoPython.c:101
taking False path
102 ret = PyFloat_FromDouble(CNUMBER(obj));
103 Py_INCREF(ret);
104 return ret;
105 }
106 if(ISSEQ(obj)) {
when considering value == (int)0 from source/IoPython.c:106
taking False path
107 ret = PyString_FromString(CSTRING(obj));
108 Py_INCREF(ret);
109 return ret;
110 }
111 printf("Unable to convert parameter to python.\n");
112 return NULL;
113 }
returning (PyObject*)NULL without setting an exception