# HG changeset patch # User Bruno Haible # Date 1316553121 -7200 # Node ID 5adced00bbec104c84ac66ae40ed3a6bc2d43bda # Parent 8240f09ff8de0e31bb88015b0a965781a9049e45 fclose tests: EBADF tests. * tests/test-fclose.c (main): Add tests for EBADF. diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2011-09-20 Bruno Haible + fclose tests: EBADF tests. + * tests/test-fclose.c (main): Add tests for EBADF. + fflush tests: EBADF tests. * tests/test-fflush.c: Include errno.h, macros.h. (main): Add tests for EBADF. diff --git a/tests/test-fclose.c b/tests/test-fclose.c --- a/tests/test-fclose.c +++ b/tests/test-fclose.c @@ -76,12 +76,35 @@ /* Test that fclose() sets errno if someone else closes the stream fd behind the back of stdio. */ - f = fdopen (fd, "w+"); - ASSERT (f); - ASSERT (close (fd) == 0); - errno = 0; - ASSERT (fclose (f) == EOF); - ASSERT (errno == EBADF); + { + FILE *fp = fdopen (fd, "w+"); + ASSERT (fp != NULL); + ASSERT (close (fd) == 0); + errno = 0; + ASSERT (fclose (fp) == EOF); + ASSERT (errno == EBADF); + } + + /* Test that fclose() sets errno if the stream was constructed with + an invalid file descriptor. */ + { + FILE *fp = fdopen (-1, "r"); + if (fp != NULL) + { + errno = 0; + ASSERT (fclose (fp) == EOF); + ASSERT (errno == EBADF); + } + } + { + FILE *fp = fdopen (99, "r"); + if (fp != NULL) + { + errno = 0; + ASSERT (fclose (fp) == EOF); + ASSERT (errno == EBADF); + } + } /* Clean up. */ ASSERT (remove (BASE) == 0);