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 | |
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.
-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; |