mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 15:27:13 +03:00
parsers: use the correct maximum radix tree depth
Previously, we would not use more than half of a SHA-1 hash when constructing and searching the tree.
This commit is contained in:
parent
1ecfe35e64
commit
6f88d16cf2
@ -546,7 +546,7 @@ static inline int nt_level(const char *node, int level)
|
||||
|
||||
static int nt_find(indexObject *self, const char *node, Py_ssize_t nodelen)
|
||||
{
|
||||
int level, off;
|
||||
int level, maxlevel, off;
|
||||
|
||||
if (nodelen == 20 && node[0] == '\0' && memcmp(node, nullid, 20) == 0)
|
||||
return -1;
|
||||
@ -554,7 +554,9 @@ static int nt_find(indexObject *self, const char *node, Py_ssize_t nodelen)
|
||||
if (self->nt == NULL)
|
||||
return -2;
|
||||
|
||||
for (level = off = 0; level < nodelen; level++) {
|
||||
maxlevel = nodelen > 20 ? 40 : ((int)nodelen * 2);
|
||||
|
||||
for (level = off = 0; level < maxlevel; level++) {
|
||||
int k = nt_level(node, level);
|
||||
nodetree *n = &self->nt[off];
|
||||
int v = n->children[k];
|
||||
@ -596,7 +598,7 @@ static int nt_insert(indexObject *self, const char *node, int rev)
|
||||
int level = 0;
|
||||
int off = 0;
|
||||
|
||||
while (level < 20) {
|
||||
while (level < 40) {
|
||||
int k = nt_level(node, level);
|
||||
nodetree *n;
|
||||
int v;
|
||||
|
Loading…
Reference in New Issue
Block a user