From: Nguyễn Thái Ngọc Duy Date: Sun, 16 Dec 2012 04:15:26 +0000 (+0700) Subject: cache-tree: replace "for" loops in update_one with "while" loops X-Git-Tag: v1.8.1.1~35^2~2 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/386cc8b031611497186a8c89be0f980a54786525?hp=--cc cache-tree: replace "for" loops in update_one with "while" loops The loops in update_one can be increased in two different ways: step by one for files and by for directories. "for" loop is not suitable for this as it always steps by one and special handling is required for directories. Replace them with "while" loops for clarity. Signed-off-by: Nguyễn Thái Ngọc Duy Signed-off-by: Junio C Hamano --- 386cc8b031611497186a8c89be0f980a54786525 diff --git a/cache-tree.c b/cache-tree.c index e2beab584b..44eed28aba 100644 --- a/cache-tree.c +++ b/cache-tree.c @@ -259,7 +259,8 @@ static int update_one(struct cache_tree *it, /* * Find the subtrees and update them. */ - for (i = 0; i < entries; i++) { + i = 0; + while (i < entries) { struct cache_entry *ce = cache[i]; struct cache_tree_sub *sub; const char *path, *slash; @@ -271,8 +272,10 @@ static int update_one(struct cache_tree *it, break; /* at the end of this level */ slash = strchr(path + baselen, '/'); - if (!slash) + if (!slash) { + i++; continue; + } /* * a/bbb/c (base = a/, slash = /c) * ==> @@ -289,7 +292,7 @@ static int update_one(struct cache_tree *it, flags); if (subcnt < 0) return subcnt; - i += subcnt - 1; + i += subcnt; sub->used = 1; } @@ -300,7 +303,8 @@ static int update_one(struct cache_tree *it, */ strbuf_init(&buffer, 8192); - for (i = 0; i < entries; i++) { + i = 0; + while (i < entries) { struct cache_entry *ce = cache[i]; struct cache_tree_sub *sub; const char *path, *slash; @@ -320,7 +324,7 @@ static int update_one(struct cache_tree *it, if (!sub) die("cache-tree.c: '%.*s' in '%s' not found", entlen, path + baselen, path); - i += sub->cache_tree->entry_count - 1; + i += sub->cache_tree->entry_count; sha1 = sub->cache_tree->sha1; mode = S_IFDIR; } @@ -328,6 +332,7 @@ static int update_one(struct cache_tree *it, sha1 = ce->sha1; mode = ce->ce_mode; entlen = pathlen - baselen; + i++; } if (mode != S_IFGITLINK && !missing_ok && !has_sha1_file(sha1)) { strbuf_release(&buffer);