aboutsummaryrefslogtreecommitdiff
path: root/libgfortran
diff options
context:
space:
mode:
authorJanne Blomqvist <jb@gcc.gnu.org>2011-01-17 07:48:10 +0200
committerJanne Blomqvist <jb@gcc.gnu.org>2011-01-17 07:48:10 +0200
commit9cd72574bcdf3fb8ec5bf203a4968aae8c321eae (patch)
tree2dfa4f7e5bab4c7c2953b9e4aa9c0005366a126f /libgfortran
parent124b5e3620753f9829b81b92cc2b1fa3a7fe9762 (diff)
downloadgcc-9cd72574bcdf3fb8ec5bf203a4968aae8c321eae.zip
gcc-9cd72574bcdf3fb8ec5bf203a4968aae8c321eae.tar.gz
gcc-9cd72574bcdf3fb8ec5bf203a4968aae8c321eae.tar.bz2
PR47296 Segfault when running out of file descriptors
From-SVN: r168888
Diffstat (limited to 'libgfortran')
-rw-r--r--libgfortran/ChangeLog6
-rw-r--r--libgfortran/io/unix.c12
2 files changed, 10 insertions, 8 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 1eeeda3..cab2d15 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,9 @@
+2011-01-17 Janne Blomqvist <jb@gcc.gnu.org>
+
+ PR libfortran/47296
+ * io/unix.c (tempfile): Set opp->file and opp->file_len also if an
+ error occurs.
+
2011-01-16 Jakub Jelinek <jakub@redhat.com>
PR fortran/46625
diff --git a/libgfortran/io/unix.c b/libgfortran/io/unix.c
index e66560f..fa64e20 100644
--- a/libgfortran/io/unix.c
+++ b/libgfortran/io/unix.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+/* Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+ 2011
Free Software Foundation, Inc.
Contributed by Andy Vaught
F2003 I/O support contributed by Jerry DeLisle
@@ -1084,13 +1085,8 @@ tempfile (st_parameter_open *opp)
while (fd == -1 && errno == EEXIST);
#endif /* HAVE_MKSTEMP */
- if (fd < 0)
- free (template);
- else
- {
- opp->file = template;
- opp->file_len = strlen (template); /* Don't include trailing nul */
- }
+ opp->file = template;
+ opp->file_len = strlen (template); /* Don't include trailing nul */
return fd;
}