зеркало из https://github.com/microsoft/git.git
Merge branch 'ew/cbtree-remove-unused-and-broken-cb-unlink'
Code clean-up. * ew/cbtree-remove-unused-and-broken-cb-unlink: cbtree: remove broken and unused cb_unlink
This commit is contained in:
Коммит
aa5937d2d9
32
cbtree.c
32
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) {
|
||||
|
|
1
cbtree.h
1
cbtree.h
|
@ -47,7 +47,6 @@ static inline void cb_init(struct cb_tree *t)
|
|||
|
||||
struct cb_node *cb_lookup(struct cb_tree *, const uint8_t *k, size_t klen);
|
||||
struct cb_node *cb_insert(struct cb_tree *, struct cb_node *, size_t klen);
|
||||
struct cb_node *cb_unlink(struct cb_tree *t, const uint8_t *k, size_t klen);
|
||||
|
||||
typedef enum cb_next (*cb_iter)(struct cb_node *, void *arg);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче