From: Henrik Grubbström Date: Fri, 25 Nov 2011 15:43:41 GMT Subject: Re: Infinite loop in cascade_filter_fn() Message-ID: In-Reply-To: On Wed, 23 Nov 2011, Henrik Grubbström wrote: > Hi. > > My git repository walker just got bitten by what seems to be a reasonably new > bug in convert.c:cascade_filter_fn() (git 1.7.8.rc3 (gentoo)). After some tracing, the problem is triggered by the variable "remaining" being set to 1 in the beginning of the cascade_filter_fn() loop, which causes filter "two" to be called with an output buffer size of 1. Filter "two" in this case is lf_to_crlf_filter_fn(), and the next input character is a "\n". lf_to_crlf_filter_fn() wants to convert this to "\r\n", but that doesn't fit into the buffer, so it breaks out and returns zero. Upon seing the zero cascade_filter_fn() thinks all is well, even though nothing has happened, and loops. The bug is probably that lf_to_crlf_filter_fn() should return non-zero in this case (ie o and/or i being zero). > Thanks, -- Henrik Grubbström grubba@roxen.com Roxen Internet Software AB