aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl@gcc.gnu.org>2009-04-06 16:07:51 -0700
committerH.J. Lu <hjl@gcc.gnu.org>2009-04-06 16:07:51 -0700
commit4197c13d08d5f8984eab7e6f615ca605c0a6ad13 (patch)
tree92dbf267a9a5a57ff0a6436365b117a8cad0ad9c
parentfe0a25ec79f35eb3ae2ecf31e4fd2ba91a6294fa (diff)
downloadgcc-4197c13d08d5f8984eab7e6f615ca605c0a6ad13.zip
gcc-4197c13d08d5f8984eab7e6f615ca605c0a6ad13.tar.gz
gcc-4197c13d08d5f8984eab7e6f615ca605c0a6ad13.tar.bz2
re PR libfortran/39664 (Revision 145571 breaks stdio)
2009-04-06 H.J. Lu <hongjiu.lu@intel.com> PR libgfortran/39664 * io/unix.c (raw_close): Don't close STDOUT_FILENO, STDERR_FILENO nor STDIN_FILENO. From-SVN: r145636
-rw-r--r--libgfortran/ChangeLog40
-rw-r--r--libgfortran/io/unix.c7
2 files changed, 29 insertions, 18 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index f2cf222..b1a4e19 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,9 @@
+2009-04-06 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR libgfortran/39664
+ * io/unix.c (raw_close): Don't close STDOUT_FILENO,
+ STDERR_FILENO nor STDIN_FILENO.
+
2009-04-06 David Edelsohn <edelsohn@gnu.org>
* io/io.h (struct stream): Rename truncate to trunc.
@@ -14,7 +20,7 @@
2009-04-05 Jerry DeLisle <jvdelisle@gcc.gnu.org>
- PR libfortran/37754
+ PR libfortran/37754
* io/io.h (format_hash_entry): New structure for hash table.
(format_hash_table): The hash table itself.
(free_format_data): Revise function prototype.
@@ -47,7 +53,7 @@
2009-04-05 Jerry DeLisle <jvdelisle@gcc.gnu.org>
- PR libfortran/37754
+ PR libfortran/37754
* io/transfer.c (formatted_transfer_scalar): Remove this function by
factoring it into two new functions, one for read and one for write,
eliminating all the conditionals for read or write mode.
@@ -57,7 +63,7 @@
2009-04-05 Janne Blomqvist <jb@gcc.gnu.org>
- PR libfortran/25561 libfortran/37754
+ PR libfortran/25561 libfortran/37754
* io/io.h (struct stream): Define new stream interface function
pointers, and inline functions for accessing it.
(struct fbuf): Use int instead of size_t, remove flushed element.
@@ -79,7 +85,7 @@
(fbuf_read): New prototype.
(fbuf_getc_refill): New prototype.
(fbuf_getc): New inline function.
- * io/fbuf.c (fbuf_init): Use int, get rid of flushed.
+ * io/fbuf.c (fbuf_init): Use int, get rid of flushed.
(fbuf_debug): New function.
(fbuf_reset): Flush, and return position offset.
(fbuf_alloc): Simplify, don't flush, just realloc.
@@ -515,18 +521,18 @@
PR libfortran/34670
* intrinsics/reshape_generic.c: Add bounds checking.
* m4/reshape.m4: Likewise.
- * generated/reshape_c10.c: Regenerated.
- * generated/reshape_c16.c: Regenerated.
- * generated/reshape_c4.c: Regenerated.
- * generated/reshape_c8.c: Regenerated.
- * generated/reshape_i16.c: Regenerated.
- * generated/reshape_i4.c: Regenerated.
- * generated/reshape_i8.c: Regenerated.
- * generated/reshape_r10.c: Regenerated.
- * generated/reshape_r16.c: Regenerated.
- * generated/reshape_r4.c: Regenerated.
- * generated/reshape_r8.c: Regenerated.
- * generated/spread_r4.c: Regenerated.
+ * generated/reshape_c10.c: Regenerated.
+ * generated/reshape_c16.c: Regenerated.
+ * generated/reshape_c4.c: Regenerated.
+ * generated/reshape_c8.c: Regenerated.
+ * generated/reshape_i16.c: Regenerated.
+ * generated/reshape_i4.c: Regenerated.
+ * generated/reshape_i8.c: Regenerated.
+ * generated/reshape_r10.c: Regenerated.
+ * generated/reshape_r16.c: Regenerated.
+ * generated/reshape_r4.c: Regenerated.
+ * generated/reshape_r8.c: Regenerated.
+ * generated/spread_r4.c: Regenerated.
2008-10-13 Jerry DeLisle <jvdelisle@gcc.gnu.org
@@ -550,7 +556,7 @@
than the sub-object.
2008-09-26 Peter O'Gorman <pogma@thewrittenword.com>
- Steve Ellcey <sje@cup.hp.com>
+ Steve Ellcey <sje@cup.hp.com>
* configure: Regenerate for new libtool.
* Makefile.in: Ditto.
diff --git a/libgfortran/io/unix.c b/libgfortran/io/unix.c
index 0d2650b..4f8cbb5 100644
--- a/libgfortran/io/unix.c
+++ b/libgfortran/io/unix.c
@@ -344,7 +344,12 @@ raw_close (unix_stream * s)
{
int retval;
- retval = close (s->fd);
+ if (s->fd != STDOUT_FILENO
+ && s->fd != STDERR_FILENO
+ && s->fd != STDIN_FILENO)
+ retval = close (s->fd);
+ else
+ retval = SUCCESS;
free_mem (s);
return retval;
}