equal
deleted
inserted
replaced
1091 } |
1091 } |
1092 |
1092 |
1093 return -1; |
1093 return -1; |
1094 } |
1094 } |
1095 |
1095 |
|
1096 static int nt_delete_node(indexObject *self, const char *node) |
|
1097 { |
|
1098 /* rev==-1 happens to get encoded as 0, which is interpreted as not set */ |
|
1099 return nt_insert(self, node, -1); |
|
1100 } |
|
1101 |
1096 static int nt_init(indexObject *self) |
1102 static int nt_init(indexObject *self) |
1097 { |
1103 { |
1098 if (self->nt == NULL) { |
1104 if (self->nt == NULL) { |
1099 if ((size_t)self->raw_length > INT_MAX / sizeof(nodetree)) { |
1105 if ((size_t)self->raw_length > INT_MAX / sizeof(nodetree)) { |
1100 PyErr_SetString(PyExc_ValueError, "overflow in nt_init"); |
1106 PyErr_SetString(PyExc_ValueError, "overflow in nt_init"); |
1790 |
1796 |
1791 for (i = start; i < len; i++) { |
1797 for (i = start; i < len; i++) { |
1792 PyObject *tuple = PyList_GET_ITEM(self->added, i); |
1798 PyObject *tuple = PyList_GET_ITEM(self->added, i); |
1793 PyObject *node = PyTuple_GET_ITEM(tuple, 7); |
1799 PyObject *node = PyTuple_GET_ITEM(tuple, 7); |
1794 |
1800 |
1795 nt_insert(self, PyBytes_AS_STRING(node), -1); |
1801 nt_delete_node(self, PyBytes_AS_STRING(node)); |
1796 } |
1802 } |
1797 |
1803 |
1798 if (start == 0) |
1804 if (start == 0) |
1799 Py_CLEAR(self->added); |
1805 Py_CLEAR(self->added); |
1800 } |
1806 } |
1849 for (i = start + 1; i < self->length - 1; i++) { |
1855 for (i = start + 1; i < self->length - 1; i++) { |
1850 const char *node = index_node_existing(self, i); |
1856 const char *node = index_node_existing(self, i); |
1851 if (node == NULL) |
1857 if (node == NULL) |
1852 return -1; |
1858 return -1; |
1853 |
1859 |
1854 nt_insert(self, node, -1); |
1860 nt_delete_node(self, node); |
1855 } |
1861 } |
1856 if (self->added) |
1862 if (self->added) |
1857 nt_invalidate_added(self, 0); |
1863 nt_invalidate_added(self, 0); |
1858 if (self->ntrev > start) |
1864 if (self->ntrev > start) |
1859 self->ntrev = (int)start; |
1865 self->ntrev = (int)start; |
1901 |
1907 |
1902 if (node_check(item, &node) == -1) |
1908 if (node_check(item, &node) == -1) |
1903 return -1; |
1909 return -1; |
1904 |
1910 |
1905 if (value == NULL) |
1911 if (value == NULL) |
1906 return self->nt ? nt_insert(self, node, -1) : 0; |
1912 return self->nt ? nt_delete_node(self, node) : 0; |
1907 rev = PyInt_AsLong(value); |
1913 rev = PyInt_AsLong(value); |
1908 if (rev > INT_MAX || rev < 0) { |
1914 if (rev > INT_MAX || rev < 0) { |
1909 if (!PyErr_Occurred()) |
1915 if (!PyErr_Occurred()) |
1910 PyErr_SetString(PyExc_ValueError, "rev out of range"); |
1916 PyErr_SetString(PyExc_ValueError, "rev out of range"); |
1911 return -1; |
1917 return -1; |