From ebe9b4e02b7d86e0a7b31dd9b129d20814072cca Mon Sep 17 00:00:00 2001 From: rsiddharth Date: Fri, 17 Apr 2020 20:33:24 -0400 Subject: nserver: Update TSTree_search_prefix. * nserver/src/tstree.c (TSTree_search_prefix): Fix the largest prefix matching key instead of the shortest. --- nserver/src/tstree.c | 5 +++-- 1 file 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) -- cgit v1.2.3