File: | source/IoPython.c |
Function: | IoPython_call_int |
Error: | ob_refcnt of '*pyValue' is 1 too high |
168 IoObject *IoPython_call_int(IoPython *self, IoObject *locals, IoMessage *m, int argOffset, char *functionName)
169 {
170 int argc = IoMessage_argCount(m);
171
172 PyObject *pModule = DATA(self)->data;
173 if(!pModule) {
when treating unknown struct IoPython * from source/IoPython.c:169 as non-NULL
when treating unknown struct IoObjectData * from source/IoPython.c:173 as non-NULL
when treating unknown void * from source/IoPython.c:173 as non-NULL
174 fprintf(stderr, "We have null pModule for function %s ", functionName);
when treating unknown struct PyObject * from source/IoPython.c:173 as non-NULL
taking False path
175 return IONIL(self);
176 }
177 if(!PyObject_HasAttrString(pModule, functionName)){
178 fprintf(stderr, "Module has no function %s ", functionName);
when treating unknown char * from source/IoPython.c:169 as non-NULL
when PyObject_HasAttrString() returns 1 (true)
taking False path
179 return IONIL(self);
180 }
181
182 PyObject *pFunc = PyObject_GetAttrString(pModule, functionName);
183 /* pFunc is a new reference */
when PyObject_GetAttrString() succeeds
184
185 if (pFunc && PyCallable_Check(pFunc)) {
186 PyObject *pArgs = PyTuple_New(argc - argOffset); // argc
taking True path
when PyCallable_Check() returns 1 (true)
taking True path
187 int i;
when PyTuple_New() succeeds
188 for(i = argOffset;i<argc;i++) {
189 IoObject *param = IoMessage_locals_valueArgAt_(m, locals, i);
when taking True path
when taking False path
190 PyObject *pyValue = convertIo(self, param);
191 PyTuple_SetItem(pArgs, i-argOffset, pyValue);
when convertIo() succeeds
new ref from (unknown) convertIo allocated at: PyObject *pyValue = convertIo(self, param);
ob_refcnt is now refs: 1 + N where N >= 0
192 }
when considering range: 0 <= value <= 0x7fffffff
when PyTuple_SetItem() fails (index out of range)
193 PyObject *pValue = PyObject_CallObject(pFunc, pArgs);
194 Py_DECREF(pArgs);
when PyObject_CallObject() fails
195 Py_XDECREF(pFunc);
when taking True path
196 if (pValue != NULL) {
taking False path
when taking True path
197 return convertPy(self, pValue);
taking False path
198 } else {
199 if (PyErr_Occurred())
200 PyErr_Print();
PyErr_Occurred()
taking True path
201 fprintf(stderr,"Call failed\n");
calling PyErr_Print()
202 }
203 } else {
204 if (PyErr_Occurred())
205 PyErr_Print();
206 else {
207 return convertPy(self, pFunc);
208 }
209 fprintf(stderr, "Cannot find python function \"%s\"\n", functionName);
210 }
211 return IONIL(self);
212 }
when treating unknown struct IoObjectData * from source/IoPython.c:212 as non-NULL
when treating unknown struct IoTag * from source/IoPython.c:212 as non-NULL
when treating unknown void * from source/IoPython.c:212 as non-NULL
213
File: | source/IoPython.c |
Function: | IoPython_call_int |
Error: | ob_refcnt of '*pValue' is 1 too high |
168 IoObject *IoPython_call_int(IoPython *self, IoObject *locals, IoMessage *m, int argOffset, char *functionName)
169 {
170 int argc = IoMessage_argCount(m);
171
172 PyObject *pModule = DATA(self)->data;
173 if(!pModule) {
when treating unknown struct IoPython * from source/IoPython.c:169 as non-NULL
when treating unknown struct IoObjectData * from source/IoPython.c:173 as non-NULL
when treating unknown void * from source/IoPython.c:173 as non-NULL
174 fprintf(stderr, "We have null pModule for function %s ", functionName);
when treating unknown struct PyObject * from source/IoPython.c:173 as non-NULL
taking False path
175 return IONIL(self);
176 }
177 if(!PyObject_HasAttrString(pModule, functionName)){
178 fprintf(stderr, "Module has no function %s ", functionName);
when treating unknown char * from source/IoPython.c:169 as non-NULL
when PyObject_HasAttrString() returns 1 (true)
taking False path
179 return IONIL(self);
180 }
181
182 PyObject *pFunc = PyObject_GetAttrString(pModule, functionName);
183 /* pFunc is a new reference */
when PyObject_GetAttrString() succeeds
184
185 if (pFunc && PyCallable_Check(pFunc)) {
186 PyObject *pArgs = PyTuple_New(argc - argOffset); // argc
taking True path
when PyCallable_Check() returns 1 (true)
taking True path
187 int i;
when PyTuple_New() succeeds
188 for(i = argOffset;i<argc;i++) {
189 IoObject *param = IoMessage_locals_valueArgAt_(m, locals, i);
when taking True path
when taking False path
190 PyObject *pyValue = convertIo(self, param);
191 PyTuple_SetItem(pArgs, i-argOffset, pyValue);
when convertIo() succeeds
192 }
when considering range: 0 <= value <= 0x7fffffff
when PyTuple_SetItem() fails (index out of range)
193 PyObject *pValue = PyObject_CallObject(pFunc, pArgs);
194 Py_DECREF(pArgs);
when PyObject_CallObject() succeeds
new ref from call to PyObject_CallObject allocated at: PyObject *pValue = PyObject_CallObject(pFunc, pArgs);
ob_refcnt is now refs: 1 + N where N >= 0
195 Py_XDECREF(pFunc);
when taking True path
196 if (pValue != NULL) {
taking False path
when taking True path
197 return convertPy(self, pValue);
taking True path
198 } else {
199 if (PyErr_Occurred())
200 PyErr_Print();
201 fprintf(stderr,"Call failed\n");
202 }
203 } else {
204 if (PyErr_Occurred())
205 PyErr_Print();
206 else {
207 return convertPy(self, pFunc);
208 }
209 fprintf(stderr, "Cannot find python function \"%s\"\n", functionName);
210 }
211 return IONIL(self);
212 }
213