summary refs log tree commit diff
path: root/libio/iofclose.c
diff options
context:
space:
mode:
Diffstat (limited to 'libio/iofclose.c')
-rw-r--r--libio/iofclose.c33
1 files changed, 12 insertions, 21 deletions
diff --git a/libio/iofclose.c b/libio/iofclose.c
index 79a0543471..67fadbed2d 100644
--- a/libio/iofclose.c
+++ b/libio/iofclose.c
@@ -33,29 +33,20 @@ _IO_fclose (fp)
 {
   int status;
 
-  if (fp == NULL)
-    {
-      /* Close all streams.  */
-      _IO_cleanup ();
-      status = 0;
-    }
+  CHECK_FILE(fp, EOF);
+
+  _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
+  _IO_flockfile (fp);
+  if (fp->_IO_file_flags & _IO_IS_FILEBUF)
+    status = _IO_file_close_it (fp);
   else
+    status = fp->_flags & _IO_ERR_SEEN ? -1 : 0;
+  _IO_FINISH (fp);
+  _IO_cleanup_region_end (1);
+  if (fp != _IO_stdin && fp != _IO_stdout && fp != _IO_stderr)
     {
-      CHECK_FILE(fp, EOF);
-
-      _IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp);
-      _IO_flockfile (fp);
-      if (fp->_IO_file_flags & _IO_IS_FILEBUF)
-	status = _IO_file_close_it (fp);
-      else
-	status = fp->_flags & _IO_ERR_SEEN ? -1 : 0;
-      _IO_FINISH (fp);
-      _IO_cleanup_region_end (1);
-      if (fp != _IO_stdin && fp != _IO_stdout && fp != _IO_stderr)
-	{
-	  fp->_IO_file_flags = 0;
-	  free(fp);
-	}
+      fp->_IO_file_flags = 0;
+      free(fp);
     }
 
   return status;