This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
Yes, you are right. My bad.Patching: indeed, reverting this hunk of 6746 commit:
+
+ // Set input to nonblocking for fifos.
+ if (__mode & ios_base::in)
+ fcntl(this->fd(), F_SETFL, O_NONBLOCK);
+
Fixes the problem without regressing on 6746.
Interesting. I would have thought that removing this would cause the call to underflow() in basic_filebuf::open() to block, causing the test case to wait for input *before* printing out the prompt (this seems to be the reason that non-blocking input is specified).
Agreed.So far, this is what I think is going on: * non-blocking input is specified so underflow() doesn't block (which is wrong, underflow() should block). * underflow() must not block because it is called from open() which must not block. * open() calls underflow() so that in_avail() will return non-zero after open() (libstdc++/6746).
I concur, but in fact it does.However, I don't see how calling underflow() from open() fixes libstdc++/6746.
Unless I am missing something,Paolo.
readsome will return up to BUFSIZ characters, and then
return 0 until the end of time.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |