aboutsummaryrefslogtreecommitdiff
path: root/libgfortran/intrinsics/system.c
diff options
context:
space:
mode:
authorFrancois-Xavier Coudert <fxcoudert@gcc.gnu.org>2007-05-07 19:48:40 +0000
committerFrançois-Xavier Coudert <fxcoudert@gcc.gnu.org>2007-05-07 19:48:40 +0000
commit25a5e75613af9aac60b3c5b6856d6b6819b1ccae (patch)
tree986b5101c17bfab4371276f257fdb9c143ab5053 /libgfortran/intrinsics/system.c
parentadcbdf5c45c75205b243c0a9abc39e4e6685d677 (diff)
downloadgcc-25a5e75613af9aac60b3c5b6856d6b6819b1ccae.zip
gcc-25a5e75613af9aac60b3c5b6856d6b6819b1ccae.tar.gz
gcc-25a5e75613af9aac60b3c5b6856d6b6819b1ccae.tar.bz2
re PR libfortran/31607 (CALL SYSTEM produces garbled output when writing to a buffered file)
PR libfortran/31607 * intrinsics/system.c (system_sub): Call flush_all_units. * io/io.h (flush_all_units): Move prototype to libgfortran.h. * libgfortran.h (flush_all_units): Add prototype. From-SVN: r124510
Diffstat (limited to 'libgfortran/intrinsics/system.c')
-rw-r--r--libgfortran/intrinsics/system.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/libgfortran/intrinsics/system.c b/libgfortran/intrinsics/system.c
index 73f9371..49a5ba2 100644
--- a/libgfortran/intrinsics/system.c
+++ b/libgfortran/intrinsics/system.c
@@ -49,6 +49,9 @@ system_sub (const char *fcmd, GFC_INTEGER_4 *status, gfc_charlen_type cmd_len)
char cmd[cmd_len + 1];
int stat;
+ /* Flush all I/O units before executing the command. */
+ flush_all_units();
+
memcpy (cmd, fcmd, cmd_len);
cmd[cmd_len] = '\0';