diff options
author | Carlos Martín Nieto <cmn@dwim.me> | 2015-11-14 23:46:21 +0100 |
---|---|---|
committer | Carlos Martín Nieto <cmn@dwim.me> | 2015-11-28 19:21:51 +0100 |
commit | 7132150ddf7a883c1f12a89c2518c1a07c0dc94c (patch) | |
tree | 32b101251f51b7c1b753c4ef29bd78ddc5181bec /src/tree.c | |
parent | e0ab1ca0288db57fabbd63dfb6a0cd27f3acf8b2 (diff) | |
download | libgit2-7132150ddf7a883c1f12a89c2518c1a07c0dc94c.tar.gz |
tree: avoid advancing over the filename multiple times
We've already looked at the filename with `memchr()` and then used
`strlen()` to allocate the entry. We already know how much we have to
advance to get to the object id, so add the filename length instead of
looking at each byte again.
Diffstat (limited to 'src/tree.c')
-rw-r--r-- | src/tree.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/src/tree.c b/src/tree.c index bdd17661b..3504452c2 100644 --- a/src/tree.c +++ b/src/tree.c @@ -414,10 +414,8 @@ int git_tree__parse(void *_tree, git_odb_object *odb_obj) entry->attr = attr; } - while (buffer < buffer_end && *buffer != 0) - buffer++; - - buffer++; + /* Advance to the ID just after the path */ + buffer += entry->filename_len + 1; git_oid_fromraw(&entry->oid, (const unsigned char *)buffer); buffer += GIT_OID_RAWSZ; |