##// END OF EJS Templates
index: remove side-effect from failed nt_new()...
Martin von Zweigbergk -
r38973:dcd395dc default
parent child Browse files
Show More
@@ -1018,18 +1018,21 b' static int nt_find(indexObject *self, co'
1018 static int nt_new(nodetree *self)
1018 static int nt_new(nodetree *self)
1019 {
1019 {
1020 if (self->length == self->capacity) {
1020 if (self->length == self->capacity) {
1021 unsigned newcapacity;
1022 nodetreenode *newnodes;
1021 if (self->capacity >= INT_MAX / (sizeof(nodetreenode) * 2)) {
1023 if (self->capacity >= INT_MAX / (sizeof(nodetreenode) * 2)) {
1022 PyErr_SetString(PyExc_MemoryError,
1024 PyErr_SetString(PyExc_MemoryError,
1023 "overflow in nt_new");
1025 "overflow in nt_new");
1024 return -1;
1026 return -1;
1025 }
1027 }
1026 self->capacity *= 2;
1028 newcapacity = self->capacity * 2;
1027 self->nodes = realloc(self->nodes,
1029 newnodes = realloc(self->nodes, newcapacity * sizeof(nodetreenode));
1028 self->capacity * sizeof(nodetreenode));
1030 if (newnodes == NULL) {
1029 if (self->nodes == NULL) {
1030 PyErr_SetString(PyExc_MemoryError, "out of memory");
1031 PyErr_SetString(PyExc_MemoryError, "out of memory");
1031 return -1;
1032 return -1;
1032 }
1033 }
1034 self->capacity = newcapacity;
1035 self->nodes = newnodes;
1033 memset(&self->nodes[self->length], 0,
1036 memset(&self->nodes[self->length], 0,
1034 sizeof(nodetreenode) * (self->capacity - self->length));
1037 sizeof(nodetreenode) * (self->capacity - self->length));
1035 }
1038 }
General Comments 0
You need to be logged in to leave comments. Login now