static void tree_iterator_frame_pop(tree_iterator *iter)
{
tree_iterator_frame *frame;
+ git_buf *buf = NULL;
assert(iter->frames.size);
git_vector_free(&frame->entries);
git_tree_free(frame->tree);
+
+ do {
+ buf = git_array_pop(frame->similar_paths);
+ git_buf_free(buf);
+ } while (buf != NULL);
+
+ git_array_clear(frame->similar_paths);
+ git_buf_free(&frame->path);
}
static int tree_iterator_current(
static void filesystem_iterator_free(git_iterator *i)
{
filesystem_iterator *iter = (filesystem_iterator *)i;
+ git__free(iter->root);
+ git_buf_free(&iter->current_path);
+ if (iter->index)
+ git_index_snapshot_release(&iter->index_snapshot, iter->index);
filesystem_iterator_clear(iter);
}
(error = git_index_snapshot_new(&iter->index_snapshot, index)) < 0)
goto on_error;
+ iter->index = index;
iter->dirload_flags =
(iterator__ignore_case(&iter->base) ? GIT_PATH_DIR_IGNORE_CASE : 0) |
(iterator__flag(&iter->base, PRECOMPOSE_UNICODE) ?
error = git_odb_write(oid, odb, tree.ptr, tree.size, GIT_OBJ_TREE);
git_buf_free(&tree);
+ git_vector_free(&entries);
+
return error;
}
expect_pos(50, 10, GIT_ENOTFOUND);
expect_pos(68, 10, GIT_ENOTFOUND);
expect_pos(256, 12, GIT_OK);
+
+ git_array_clear(integers);
}