fclose tests: EBADF tests.
authorBruno Haible <bruno@clisp.org>
Tue, 20 Sep 2011 21:12:01 +0000 (23:12 +0200)
committerBruno Haible <bruno@clisp.org>
Tue, 20 Sep 2011 21:28:05 +0000 (23:28 +0200)
* tests/test-fclose.c (main): Add tests for EBADF.

ChangeLog
tests/test-fclose.c

index a10d1eb..dedd5cb 100644 (file)
--- 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.
index a11eca9..ecc60cd 100644 (file)
@@ -76,12 +76,35 @@ main (int argc, char **argv)
 
   /* 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);