summaryrefslogtreecommitdiff
path: root/cbtree.c
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2021-12-07 18:38:10 (GMT)
committerJunio C Hamano <gitster@pobox.com>2021-12-07 23:18:35 (GMT)
commit2c68f577fc8a400f4d354f4700e4809c1bfd6470 (patch)
treeda5158980e4999518393365b8d60c499e988afc2 /cbtree.c
parente9d7761bb94f20acc98824275e317fa82436c25d (diff)
downloadgit-2c68f577fc8a400f4d354f4700e4809c1bfd6470.zip
git-2c68f577fc8a400f4d354f4700e4809c1bfd6470.tar.gz
git-2c68f577fc8a400f4d354f4700e4809c1bfd6470.tar.bz2
cbtree: remove broken and unused cb_unlink
cb_unlink is broken once a node is no longer self-referential due to subsequent insertions. This is a consequence of an intrusive implementation and I'm not sure if it's easily fixable while retaining our cache-friendly intrusive property (I've tried for several hours in another project). In any case, we're not using cb_unlink anywhere in our codebase, just get rid of it to avoid misleading future readers. Signed-off-by: Eric Wong <e@80x24.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'cbtree.c')
-rw-r--r--cbtree.c32
1 files changed, 0 insertions, 32 deletions
diff --git a/cbtree.c b/cbtree.c
index b0c65d8..336e46d 100644
--- a/cbtree.c
+++ b/cbtree.c
@@ -95,38 +95,6 @@ struct cb_node *cb_lookup(struct cb_tree *t, const uint8_t *k, size_t klen)
return p && !memcmp(p->k, k, klen) ? p : NULL;
}
-struct cb_node *cb_unlink(struct cb_tree *t, const uint8_t *k, size_t klen)
-{
- struct cb_node **wherep = &t->root;
- struct cb_node **whereq = NULL;
- struct cb_node *q = NULL;
- size_t direction = 0;
- uint8_t c;
- struct cb_node *p = t->root;
-
- if (!p) return NULL; /* empty tree, nothing to delete */
-
- /* traverse to find best match, keeping link to parent */
- while (1 & (uintptr_t)p) {
- whereq = wherep;
- q = cb_node_of(p);
- c = q->byte < klen ? k[q->byte] : 0;
- direction = (1 + (q->otherbits | c)) >> 8;
- wherep = q->child + direction;
- p = *wherep;
- }
-
- if (memcmp(p->k, k, klen))
- return NULL; /* no match, nothing unlinked */
-
- /* found an exact match */
- if (whereq) /* update parent */
- *whereq = q->child[1 - direction];
- else
- t->root = NULL;
- return p;
-}
-
static enum cb_next cb_descend(struct cb_node *p, cb_iter fn, void *arg)
{
if (1 & (uintptr_t)p) {