William Throwe <wtt6@xxxxxxxxxxx> writes: > In git 2.2.0 (also tested on 2.2.0.65.g9abc44b), if an external > smudge/clean filter is called on an empty file git reports something > like: > error: copy-fd: read returned Bad file descriptor > error: cannot feed the input to external filter cat > error: external filter cat failed > > Test case: > > mkdir bug > cd bug > git init > git config filter.cat.clean cat > git config filter.cat.smudge cat > echo '* filter=cat' >.gitattributes > touch a > git add a > > > This started in 9035d75a2be9d80d82676504d69553245017f6d4, which > introduced the possible call to copy_fd in code called from > apply_filter. It appears that NULL as the src argument to apply_filter > is being used both as a sentinel value to indicate that the fd should be > used instead and also as a representation of the contents of an empty > file. I suggest switching to using fd == -1 as the sentinel as shown in > the patch below. > > Thanks, > Will > William, thanks for raising this issue. Steffen, comments? > diff --git a/convert.c b/convert.c > index 9a5612e..0509ac1 100644 > --- a/convert.c > +++ b/convert.c > @@ -355,7 +355,7 @@ static int filter_buffer_or_fd(int in, int out, void *data) > > sigchain_push(SIGPIPE, SIG_IGN); > > - if (params->src) { > + if (params->fd == -1) { > write_err = (write_in_full(child_process.in, params->src, params->size) < 0); > } else { > write_err = copy_fd(params->fd, child_process.in); -- 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