File: bitarray/_bitarray.c
Function: bitarray_delitem
Error: returning (PyObject*)NULL without setting an exception
1616 static PyObject *
1617 bitarray_delitem(bitarrayobject *self, PyObject *a)
1618 {
1619     idx_t start, stop, step, slicelength, j, i = 0;
1620 
1621     if (ISINDEX(a)) {
when considering value == (long unsigned int)0 from bitarray/_bitarray.c:1621
taking False path
when treating unknown struct PyNumberMethods * from bitarray/_bitarray.c:1621 as non-NULL
taking True path
when considering range: 1 <= value <= 131072
taking True path
when treating unknown struct PyNumberMethods * from bitarray/_bitarray.c:1621 as non-NULL
when treating unknown struct PyObject * (*unaryfunc) (struct PyObject *) from bitarray/_bitarray.c:1621 as non-NULL
taking True path
1622         getIndex(a, &i);
1623 
1624         if (i < 0)
when taking True path
1625             i += self->nbits;
1626 
1627         if (i < 0 || i >= self->nbits) {
when considering range: 0 <= value <= 0x7fffffffffffffff
taking False path
when taking False path
1628             PyErr_SetString(PyExc_IndexError,
1629                             "bitarray assignment index out of range");
1630             return NULL;
1631         }
1632         if (delete_n(self, i, 1) < 0)
when considering range: -0x80000000 <= value <= -1
taking True path
1633             return NULL;
1634         Py_RETURN_NONE;
1635     }
1636     if (PySlice_Check(a)) {
1637         if (slice_GetIndicesEx((PySliceObject *) a, self->nbits,
1638                                &start, &stop, &step, &slicelength) < 0) {
1639             return NULL;
1640         }
1641         if (slicelength == 0)
1642             Py_RETURN_NONE;
1643 
1644         if (step < 0) {
1645             stop = start + 1;
1646             start = stop + step * (slicelength - 1) - 1;
1647             step = -step;
1648         }
1649         if (step == 1) {
1650             assert (stop - start == slicelength);
1651             if (delete_n(self, start, slicelength) < 0)
1652                 return NULL;
1653             Py_RETURN_NONE;
1654         }
1655         /* This is the only complicated part when step > 1 */
1656         for (i = j = start; i < self->nbits; i++)
1657             if ((i - start) % step != 0 || i >= stop) {
1658                 setbit(self, j, GETBIT(self, i));
1659                 j++;
1660             }
1661         if (resize(self, self->nbits - slicelength) < 0)
1662             return NULL;
1663         Py_RETURN_NONE;
1664     }
1665     PyErr_SetString(PyExc_TypeError, "index or slice expected");
1666     return NULL;
1667 }
returning (PyObject*)NULL without setting an exception
found 3 similar trace(s) to this