diff options
author | Ulrich Drepper <drepper@redhat.com> | 2007-07-07 18:29:30 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2007-07-07 18:29:30 +0000 |
commit | c2c7bd3f865be02443c65e9a4e57b7d96cde145a (patch) | |
tree | ad0701b8bfa0433293d95247e5b24730d7f23652 /stdio-common | |
parent | 765c6b0c46cc9406e912b4ead78cf587931e5156 (diff) | |
download | glibc-c2c7bd3f865be02443c65e9a4e57b7d96cde145a.zip glibc-c2c7bd3f865be02443c65e9a4e57b7d96cde145a.tar.gz glibc-c2c7bd3f865be02443c65e9a4e57b7d96cde145a.tar.bz2 |
[BZ #4745]
2007-07-07 Ulrich Drepper <drepper@redhat.com>
[BZ #4745]
* libio/strops.c (_IO_str_underflow): Clear errno before returning
EOF.
* stdio-common/Makefile (tests): Add bug18.
* stdio-common/bug18.c: New file.
Diffstat (limited to 'stdio-common')
-rw-r--r-- | stdio-common/Makefile | 2 | ||||
-rw-r--r-- | stdio-common/bug18.c | 42 |
2 files changed, 43 insertions, 1 deletions
diff --git a/stdio-common/Makefile b/stdio-common/Makefile index 735b401..57797c7 100644 --- a/stdio-common/Makefile +++ b/stdio-common/Makefile @@ -54,7 +54,7 @@ tests := tstscanf test_rdwr test-popen tstgetln test-fseek \ tst-swprintf tst-fseek tst-fmemopen test-vfprintf tst-gets \ tst-perror tst-sprintf tst-rndseek tst-fdopen tst-fphex bug14 bug15 \ tst-popen tst-unlockedio tst-fmemopen2 tst-put-error tst-fgets \ - tst-fwrite bug16 bug17 tst-swscanf tst-sprintf2 + tst-fwrite bug16 bug17 tst-swscanf tst-sprintf2 bug18 test-srcs = tst-unbputc tst-printf diff --git a/stdio-common/bug18.c b/stdio-common/bug18.c new file mode 100644 index 0000000..c3a86e5 --- /dev/null +++ b/stdio-common/bug18.c @@ -0,0 +1,42 @@ +#include <assert.h> +#include <errno.h> +#include <stdio.h> + + +static int +do_test (void) +{ + printf("setting errno to EINTR\n"); + errno = EINTR; + + printf("checking sscanf\n"); + + char str[] = "7-11"; + int i, j, n; + + i = j = n = 0; + sscanf (str, " %i - %i %n", &i, &j, &n); + printf ("found %i-%i (length=%i)\n", i, j, n); + + int result = 0; + if (i != 7) + { + printf ("i is %d, expected 7\n", i); + result = 1; + } + if (j != 11) + { + printf ("j is %d, expected 11\n", j); + result = 1; + } + if (n != 4) + { + printf ("n is %d, expected 4\n", j); + result = 1; + } + + return result; +} + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" |