summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorktietz <ktietz@138bc75d-0d04-0410-961f-82ee72b054a4>2010-04-24 12:24:33 +0000
committerktietz <ktietz@138bc75d-0d04-0410-961f-82ee72b054a4>2010-04-24 12:24:33 +0000
commit726fd258ffe36870ed3adf8f2dd5fd4e1579591e (patch)
tree8c691a6017f485114b88368272910fc7ea89c6c0
parent1b3e0accce190fdd8a5d15f467afa5ce717c72dc (diff)
downloadppe42-gcc-726fd258ffe36870ed3adf8f2dd5fd4e1579591e.tar.gz
ppe42-gcc-726fd258ffe36870ed3adf8f2dd5fd4e1579591e.zip
2010-04-24 Kai Tietz <kai.tietz@onevision.com>
PR/43844 * io/unix.c (tempfile): Correct logic for mktemp case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158686 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--libgfortran/ChangeLog5
-rw-r--r--libgfortran/io/unix.c17
2 files changed, 14 insertions, 8 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 78c6b04e9c9..2c38ba39af1 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,8 @@
+2010-04-24 Kai Tietz <kai.tietz@onevision.com>
+
+ PR/43844
+ * io/unix.c (tempfile): Correct logic for mktemp case.
+
2010-04-06 Tobias Burnus <burnus@net-b.de>
PR fortran/39997
diff --git a/libgfortran/io/unix.c b/libgfortran/io/unix.c
index 32f38904f34..b3bd438c32d 100644
--- a/libgfortran/io/unix.c
+++ b/libgfortran/io/unix.c
@@ -889,25 +889,26 @@ tempfile (st_parameter_open *opp)
template = get_mem (strlen (tempdir) + 20);
- sprintf (template, "%s/gfortrantmpXXXXXX", tempdir);
-
#ifdef HAVE_MKSTEMP
+ sprintf (template, "%s/gfortrantmpXXXXXX", tempdir);
fd = mkstemp (template);
#else /* HAVE_MKSTEMP */
-
- if (mktemp (template))
- do
+ fd = -1;
+ do
+ {
+ sprintf (template, "%s/gfortrantmpXXXXXX", tempdir);
+ if (!mktemp (template))
+ break;
#if defined(HAVE_CRLF) && defined(O_BINARY)
fd = open (template, O_RDWR | O_CREAT | O_EXCL | O_BINARY,
S_IREAD | S_IWRITE);
#else
fd = open (template, O_RDWR | O_CREAT | O_EXCL, S_IREAD | S_IWRITE);
#endif
- while (!(fd == -1 && errno == EEXIST) && mktemp (template));
- else
- fd = -1;
+ }
+ while (fd == -1 && errno == EEXIST);
#endif /* HAVE_MKSTEMP */
OpenPOWER on IntegriCloud