Show More
@@ -546,7 +546,7 b' static inline int nt_level(const char *n' | |||||
546 |
|
546 | |||
547 | static int nt_find(indexObject *self, const char *node, Py_ssize_t nodelen) |
|
547 | static int nt_find(indexObject *self, const char *node, Py_ssize_t nodelen) | |
548 | { |
|
548 | { | |
549 | int level, off; |
|
549 | int level, maxlevel, off; | |
550 |
|
550 | |||
551 | if (nodelen == 20 && node[0] == '\0' && memcmp(node, nullid, 20) == 0) |
|
551 | if (nodelen == 20 && node[0] == '\0' && memcmp(node, nullid, 20) == 0) | |
552 | return -1; |
|
552 | return -1; | |
@@ -554,7 +554,9 b' static int nt_find(indexObject *self, co' | |||||
554 | if (self->nt == NULL) |
|
554 | if (self->nt == NULL) | |
555 | return -2; |
|
555 | return -2; | |
556 |
|
556 | |||
557 | for (level = off = 0; level < nodelen; level++) { |
|
557 | maxlevel = nodelen > 20 ? 40 : ((int)nodelen * 2); | |
|
558 | ||||
|
559 | for (level = off = 0; level < maxlevel; level++) { | |||
558 | int k = nt_level(node, level); |
|
560 | int k = nt_level(node, level); | |
559 | nodetree *n = &self->nt[off]; |
|
561 | nodetree *n = &self->nt[off]; | |
560 | int v = n->children[k]; |
|
562 | int v = n->children[k]; | |
@@ -596,7 +598,7 b' static int nt_insert(indexObject *self, ' | |||||
596 | int level = 0; |
|
598 | int level = 0; | |
597 | int off = 0; |
|
599 | int off = 0; | |
598 |
|
600 | |||
599 |
while (level < |
|
601 | while (level < 40) { | |
600 | int k = nt_level(node, level); |
|
602 | int k = nt_level(node, level); | |
601 | nodetree *n; |
|
603 | nodetree *n; | |
602 | int v; |
|
604 | int v; |
General Comments 0
You need to be logged in to leave comments.
Login now