69 lines
2.2 KiB
Diff
69 lines
2.2 KiB
Diff
2008-07-08 Ulrich Drepper <drepper@redhat.com>
|
|
|
|
* stdio-common/Makefile: Add rules to build and run tst-setvbuf1.
|
|
* stdio-common/tst-setvbuf1.c: New file.
|
|
* stdio-common/tst-setvbuf1.expect: New file.
|
|
|
|
[BZ #6719]
|
|
* libio/iosetvbuf.c (_IO_setvbuf): Correctly clear buffering flags
|
|
when selecting fully-buffered stream.
|
|
Patch by Wang Xin <wxinee@gmail.com>.
|
|
|
|
--- libc/libio/iosetvbuf.c 29 Aug 2003 19:58:27 -0000 1.20
|
|
+++ libc/libio/iosetvbuf.c 8 Jul 2008 16:20:32 -0000 1.21
|
|
@@ -45,7 +45,7 @@ _IO_setvbuf (fp, buf, mode, size)
|
|
switch (mode)
|
|
{
|
|
case _IOFBF:
|
|
- fp->_IO_file_flags &= ~_IO_LINE_BUF|_IO_UNBUFFERED;
|
|
+ fp->_IO_file_flags &= ~(_IO_LINE_BUF|_IO_UNBUFFERED);
|
|
if (buf == NULL)
|
|
{
|
|
if (fp->_IO_buf_base == NULL)
|
|
--- libc/stdio-common/Makefile 24 May 2008 18:14:36 -0000 1.112
|
|
+++ libc/stdio-common/Makefile 8 Jul 2008 16:32:28 -0000 1.113
|
|
@@ -58,7 +58,7 @@ tests := tstscanf test_rdwr test-popen t
|
|
tst-popen tst-unlockedio tst-fmemopen2 tst-put-error tst-fgets \
|
|
tst-fwrite bug16 bug17 tst-swscanf tst-sprintf2 bug18 bug18a \
|
|
bug19 bug19a tst-popen2 scanf13 scanf14 scanf15 bug20 bug21 bug22 \
|
|
- scanf16 scanf17
|
|
+ scanf16 scanf17 tst-setvbuf1
|
|
|
|
test-srcs = tst-unbputc tst-printf
|
|
|
|
@@ -130,3 +130,7 @@ bug15-ENV = LOCPATH=$(common-objpfx)loca
|
|
ifneq (,$(filter %REENTRANT, $(defines)))
|
|
CPPFLAGS += -D_IO_MTSAFE_IO
|
|
endif
|
|
+
|
|
+$(objpfx)tst-setvbuf1.out: tst-setvbuf1.expect $(objpfx)tst-setvbuf1
|
|
+ $(built-program-cmd) > $@ 2>&1
|
|
+ cmp tst-setvbuf1.expect $@
|
|
--- libc/stdio-common/tst-setvbuf1.c 1 Jan 1970 00:00:00 -0000
|
|
+++ libc/stdio-common/tst-setvbuf1.c 8 Jul 2008 16:32:02 -0000 1.1
|
|
@@ -0,0 +1,19 @@
|
|
+#include <stdio.h>
|
|
+
|
|
+static int
|
|
+do_test (void)
|
|
+{
|
|
+ if (setvbuf (stderr, NULL, _IOFBF, BUFSIZ) != 0)
|
|
+ {
|
|
+ puts ("Set full buffer error.");
|
|
+ return 1;
|
|
+ }
|
|
+
|
|
+ fprintf (stderr, "Output #1 <stderr>.\n");
|
|
+ printf ("Output #2 <stdout>.\n");
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+#define TEST_FUNCTION do_test ()
|
|
+#include "../test-skeleton.c"
|
|
--- libc/stdio-common/tst-setvbuf1.expect 1 Jan 1970 00:00:00 -0000
|
|
+++ libc/stdio-common/tst-setvbuf1.expect 8 Jul 2008 16:32:14 -0000 1.1
|
|
@@ -0,0 +1,2 @@
|
|
+Output #2 <stdout>.
|
|
+Output #1 <stderr>.
|