Subject: Re: [PATCH v5 4/4] convert.c: ident + core.autocrlf didn't work

From: Junio C Hamano <[email-masked]>
Date: Wed, 20 Apr 2016 15:27:37 -0700

[email-masked] writes:

>  	if (ca.drv && (ca.drv->smudge || ca.drv->clean))
> -		return filter;
> +		return NULL;
>  
>  	if (ca.ident)
>  		filter = ident_filter(sha1);

We allocated an ident-filter here...

> -	crlf_action = ca.crlf_action;
> -
> -	if ((crlf_action == CRLF_BINARY) ||
> -			crlf_action == CRLF_AUTO_INPUT ||
> -			(crlf_action == CRLF_TEXT_INPUT))
> -		filter = cascade_filter(filter, &null_filter_singleton);
> -
> -	else if (output_eol(crlf_action) == EOL_CRLF &&
> -		 !(crlf_action == CRLF_AUTO || crlf_action == CRLF_AUTO_CRLF))
> +	if (output_eol(ca.crlf_action) == EOL_CRLF) {
> +		if (ca.crlf_action == CRLF_AUTO || ca.crlf_action == CRLF_AUTO_CRLF)
> +			return NULL;

and then by returning NULL, we lost it.

>  		filter = cascade_filter(filter, lf_to_crlf_filter());
> +	} else
> +		filter = cascade_filter(filter, &null_filter_singleton);
>  
>  	return filter;
>  }