diff options
author | rsiddharth <s@ricketyspace.net> | 2020-04-17 20:33:24 -0400 |
---|---|---|
committer | rsiddharth <s@ricketyspace.net> | 2020-04-17 20:56:37 -0400 |
commit | ebe9b4e02b7d86e0a7b31dd9b129d20814072cca (patch) | |
tree | d2c694be054b8a64323dd381b77c5951d17c0c2d | |
parent | 544398fdbe363ddff1980bbd9270554bdf050fa0 (diff) |
nserver: Update TSTree_search_prefix.
* nserver/src/tstree.c (TSTree_search_prefix): Fix the largest prefix
matching key instead of the shortest.
-rw-r--r-- | nserver/src/tstree.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/nserver/src/tstree.c b/nserver/src/tstree.c index 1a71c4d..92c7b5e 100644 --- a/nserver/src/tstree.c +++ b/nserver/src/tstree.c @@ -80,6 +80,7 @@ void *TSTree_search_prefix(TSTree *root, const char *key, size_t len) return NULL; TSTree *node = root; + TSTree *last = NULL; size_t i = 0; while (i < len && node) { @@ -89,7 +90,7 @@ void *TSTree_search_prefix(TSTree *root, const char *key, size_t len) i++; if (i < len) { if (node->value) { - return node->value; + last = node->value; } node = node->equal; } @@ -98,7 +99,7 @@ void *TSTree_search_prefix(TSTree *root, const char *key, size_t len) } } - return NULL; + return last; } void TSTree_collect_keys(TSTree *node, char *key, size_t key_sz, DArray *array) |