diff options
author | Vicent Martà <vicent@github.com> | 2013-04-22 08:07:20 -0700 |
---|---|---|
committer | Vicent Martà <vicent@github.com> | 2013-04-22 08:07:20 -0700 |
commit | d08dd728a80eb993d80ec30d8c9f9025664c8990 (patch) | |
tree | f5cf7daf3913578f57076c2efc94bfd1f728068c /src/tree.c | |
parent | a92dd316079250b27cc933b1fd00cd6af88b88d9 (diff) | |
parent | d87715926049390a2417a2476742114ec966686a (diff) | |
download | libgit2-d08dd728a80eb993d80ec30d8c9f9025664c8990.tar.gz |
Merge pull request #1454 from libgit2/vmg/new-cache
New caching
Diffstat (limited to 'src/tree.c')
-rw-r--r-- | src/tree.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/src/tree.c b/src/tree.c index d2db84055..58eb92f35 100644 --- a/src/tree.c +++ b/src/tree.c @@ -219,8 +219,9 @@ git_tree_entry *git_tree_entry_dup(const git_tree_entry *entry) return copy; } -void git_tree__free(git_tree *tree) +void git_tree__free(void *_tree) { + git_tree *tree = _tree; size_t i; git_tree_entry *e; @@ -371,8 +372,12 @@ static int tree_error(const char *str, const char *path) return -1; } -static int tree_parse_buffer(git_tree *tree, const char *buffer, const char *buffer_end) +int git_tree__parse(void *_tree, git_odb_object *odb_obj) { + git_tree *tree = _tree; + const char *buffer = git_odb_object_data(odb_obj); + const char *buffer_end = buffer + git_odb_object_size(odb_obj); + if (git_vector_init(&tree->entries, DEFAULT_TREE_SIZE, entry_sort_cmp) < 0) return -1; @@ -416,12 +421,6 @@ static int tree_parse_buffer(git_tree *tree, const char *buffer, const char *buf return 0; } -int git_tree__parse(git_tree *tree, git_odb_object *obj) -{ - assert(tree); - return tree_parse_buffer(tree, (char *)obj->raw.data, (char *)obj->raw.data + obj->raw.len); -} - static size_t find_next_dir(const char *dirname, git_index *index, size_t start) { size_t dirlen, i, entries = git_index_entrycount(index); |