On 27/08/17 12:33, Adam Dinwoodie wrote:
> On Sun, Aug 27, 2017 at 03:06:31AM +0100, Ramsay Jones wrote:
>> On 26/08/17 22:11, Adam Dinwoodie wrote:
>>> On Sat, Aug 26, 2017 at 11:53:37AM -0700, Jeff King wrote:
>>>> Interesting. I find it a little hard to believe there's so obvious a bug
>>>> as "fflush(NULL) flushes stdin", but well...that's what it seems like.
>>>>
>>>> If that's truly what it is, this is the minimal reproduction I came up
>>>> with:
>>>>
>>>> -- >8 --
>>>> #include <stdio.h>
>>>>
>>>> int main(void)
>>>> {
>>>>    char buf[256];
>>>>    while (fgets(buf, sizeof(buf), stdin)) {
>>>>            fprintf(stdout, "got: %s", buf);
>>>>            fflush(NULL);
>>>>    }
>>>>    return 0;
>>>> }
>>>> -- 8< --
>>>>
>>>> If this really is the bug, then doing something like "seq 10 | ./a.out"
>>>> would drop some of the input lines.
>>>
>>> ...yep.  It does.  Specifically, I consistently only get the firsts
>>> line:
>>>
>>>     $ seq 10 | ./a.exe
>>>     got: 1
>>>     
>>>     $ 
>>>
>>> If I introduce a delay between the lines of stdin (which I tested by
>>> just typing stdin from the keyboard), it works as expected.
>>>
>>> Looks like this one will need to go to the Cygwin mailing list; I'll
>>> take it there shortly.  Thank you all for your help getting this far!
>>
>> This is apparently fixed in cygwin v2.8.3 [see commit 78ade082fe,
>> ('Revert "errno: Stop using _impure_ptr->_errno completely"', 19-07-2017),
>> commit 9cc89b0438 ("cygwin: Use errno instead of _impure_ptr->_errno", 
>> 19-07-2017), commit a674199fc9 ("cygwin: Bump DLL version to 2.8.3",
>> 19-07-2017) and commit d2ae2f00b8 ("cygwin: add fflush fix to release
>> notes", 19-07-2017)].
>>
>> I haven't had a chance to try v2.8.3 yet (it's 3am and I'm about to
>> go get some sleep).
> 
> Cygwin 2.8.3 hasn't been released yet, 

Heh, yes, I found that out myself this afternoon. ;-)

>                                         but I've just tested the latest
> development snapshot with Jeff's simple test case, and it works as
> expected, so I'm going to assume the Git test will start passing once
> that version of the Cygwin DLL is released too.

Hmm, I'm not keen on installing "snapshot"(s), so I think I will
wait for the release to test it. (However, as a matter of interest,
how would I obtain/install/test this snapshot release - is it a
'low-risk' exercise?)

ATB,
Ramsay Jones


Reply via email to