The beginning of the loop ensures that slash can never be NULL. So don't keep checking whether it is NULL later in the loop. Furthermore, there is no need for an early return it; from the loop if slash points at the end of the string, because that is exactly what will happen when the while condition fails at the start of the next iteration. Helped-by: David Kastrup <dak@xxxxxxx> Signed-off-by: Michael Haggerty <mhagger@xxxxxxxxxxxx> --- I incorporated David's suggestion, and then realized that yet another check was superfluous, so I removed that one too. cache-tree.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/cache-tree.c b/cache-tree.c index 0bbec43..19252c3 100644 --- a/cache-tree.c +++ b/cache-tree.c @@ -551,25 +551,22 @@ static struct cache_tree *cache_tree_find(struct cache_tree *it, const char *pat if (!it) return NULL; while (*path) { - const char *slash; struct cache_tree_sub *sub; + const char *slash = strchr(path, '/'); - slash = strchr(path, '/'); if (!slash) slash = path + strlen(path); - /* between path and slash is the name of the - * subtree to look for. + /* + * Between path and slash is the name of the subtree + * to look for. */ sub = find_subtree(it, path, slash - path, 0); if (!sub) return NULL; it = sub->cache_tree; - if (slash) - while (*slash && *slash == '/') - slash++; - if (!slash || !*slash) - return it; /* prefix ended with slashes */ path = slash; + while (*path == '/') + path++; } return it; } -- 1.9.0 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html