summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarlos Martín Nieto <cmn@dwim.me>2015-11-14 23:46:21 +0100
committerCarlos Martín Nieto <cmn@dwim.me>2015-11-28 19:21:51 +0100
commit7132150ddf7a883c1f12a89c2518c1a07c0dc94c (patch)
tree32b101251f51b7c1b753c4ef29bd78ddc5181bec /src
parente0ab1ca0288db57fabbd63dfb6a0cd27f3acf8b2 (diff)
downloadlibgit2-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')
-rw-r--r--src/tree.c6
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;