From 7132150ddf7a883c1f12a89c2518c1a07c0dc94c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Sat, 14 Nov 2015 23:46:21 +0100 Subject: [PATCH] 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. --- src/tree.c | 6 ++---- 1 file 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;