214 static PyObject *
215 urj_pyc_partid (urj_pychain_t *self, PyObject *args)
216 {
217 urj_chain_t *urc = self->urchain;
218 int partno;
219 if (!PyArg_ParseTuple (args, "i", &partno))
when PyArg_ParseTuple() succeeds
taking False path
220 return NULL;
221
222 if (!urj_pyc_precheck (urc, UPRC_CBL|UPRC_DET))
when considering value == (int)0 from chain.c:222
taking True path
223 return NULL;
224
225 if (partno >= urc->parts->len)
226 {
227 PyErr_SetString (PyExc_RuntimeError, _("part number out of range"));
228 return NULL;
229 }
230 else
231 {
232 urj_part_t *p;
233 uint32_t id;
234
235 p = urc->parts->parts[partno];
236 id = urj_tap_register_get_value (p->id);
237 return Py_BuildValue ("i", id);
238 }
239 }
returning (PyObject*)NULL without setting an exception