changeset 15719:5adced00bbec

fclose tests: EBADF tests. * tests/test-fclose.c (main): Add tests for EBADF.
author Bruno Haible <bruno@clisp.org>
date Tue, 20 Sep 2011 23:12:01 +0200
parents 8240f09ff8de
children 3a20a51c1323
files ChangeLog tests/test-fclose.c
diffstat 2 files changed, 32 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2011-09-20  Bruno Haible  <bruno@clisp.org>
 
+	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.
--- 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);