mirror of
https://git.proxmox.com/git/libgit2
synced 2025-12-27 02:23:31 +00:00
iterator: assert tree_iterator has a frame
Although a `tree_iterator` that failed to be properly created does not have a frame, all other `tree_iterator`s should. Do not call `pop` in the failure case, but assert that in all other cases there is a frame.
This commit is contained in:
parent
a218b2f625
commit
4fea9cffbd
@ -558,7 +558,9 @@ static bool tree_iterator__pop_frame(tree_iterator *ti, bool final)
|
||||
{
|
||||
tree_iterator_frame *tf = ti->head;
|
||||
|
||||
if (!tf || !tf->up)
|
||||
assert(tf);
|
||||
|
||||
if (!tf->up)
|
||||
return false;
|
||||
|
||||
ti->head = tf->up;
|
||||
@ -581,8 +583,9 @@ static void tree_iterator__pop_all(tree_iterator *ti, bool to_end, bool final)
|
||||
while (tree_iterator__pop_frame(ti, final)) /* pop to root */;
|
||||
|
||||
if (!final) {
|
||||
if(ti->head)
|
||||
ti->head->current = to_end ? ti->head->n_entries : 0;
|
||||
assert(ti->head);
|
||||
|
||||
ti->head->current = to_end ? ti->head->n_entries : 0;
|
||||
ti->path_ambiguities = 0;
|
||||
git_buf_clear(&ti->path);
|
||||
}
|
||||
@ -774,11 +777,12 @@ static void tree_iterator__free(git_iterator *self)
|
||||
{
|
||||
tree_iterator *ti = (tree_iterator *)self;
|
||||
|
||||
tree_iterator__pop_all(ti, true, false);
|
||||
|
||||
if(ti->head)
|
||||
if (ti->head) {
|
||||
tree_iterator__pop_all(ti, true, false);
|
||||
git_tree_free(ti->head->entries[0]->tree);
|
||||
git__free(ti->head);
|
||||
git__free(ti->head);
|
||||
}
|
||||
|
||||
git_pool_clear(&ti->pool);
|
||||
git_buf_free(&ti->path);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user