Subject: Re: [PATCH v2 14/16] pathspec: create strip submodule slash helpers

From: Junio C Hamano <[email-masked]>
Date: Thu, 08 Dec 2016 16:28:56 -0800

Brandon Williams <[email-masked]> writes:

> +static void strip_submodule_slash_cheap(struct pathspec_item *item)
> +{
> +	int i;
> +
> +	if ((item->len >= 1 && item->match[item->len - 1] == '/') &&
> +	    (i = cache_name_pos(item->match, item->len - 1)) >= 0 &&
> +	    S_ISGITLINK(active_cache[i]->ce_mode)) {
> +		item->len--;
> +		item->match[item->len] = '\0';
> +	}
> +}

I know that this is merely a moved code, but while I was reading
this, it triggered "Do not make an assignment inside if condition"
check.  But more importantly, is the code even correct?  If the path
for the submodule is unmerged, we would get a negative i that points
at the conflicting entry; don't we want to do something about it, at
least when we have a submodule entry at stage #2 (i.e. ours)?