summaryrefslogtreecommitdiff
path: root/libgfortran
diff options
context:
space:
mode:
authorburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>2006-10-28 21:05:42 +0000
committerburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>2006-10-28 21:05:42 +0000
commite23bc65b5d3a08714e3241be58b6245fe37a9f49 (patch)
treef2dff1cbc5c6da8906e4f3fcf2580a4a5de87dc0 /libgfortran
parenta6d701f93bf2c0128f4fb3b3827a7227bacab5ba (diff)
downloadgcc-e23bc65b5d3a08714e3241be58b6245fe37a9f49.tar.gz
2006-10-28 Tobias Burnus <burnus@net-b.de>
PR fortran/29625 * io/transfer.c (formatted_transfer_scalar): Allow binary edit descriptors for real variables; give error for BOZ edit descriptor for non-integers when using -std=f*. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@118111 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgfortran')
-rw-r--r--libgfortran/ChangeLog7
-rw-r--r--libgfortran/io/transfer.c14
2 files changed, 19 insertions, 2 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index fc9aeea0ee3..d73d188742e 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,10 @@
+2006-10-28 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/29625
+ * io/transfer.c (formatted_transfer_scalar): Allow binary edit
+ descriptors for real variables; give error for BOZ edit
+ descriptor for non-integers when using -std=f*.
+
2006-10-26 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/29563
diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c
index aacf4a33ded..46fae1b2a1d 100644
--- a/libgfortran/io/transfer.c
+++ b/libgfortran/io/transfer.c
@@ -844,7 +844,9 @@ formatted_transfer_scalar (st_parameter_dt *dtp, bt type, void *p, int len,
case FMT_B:
if (n == 0)
goto need_data;
- if (require_type (dtp, BT_INTEGER, type, f))
+
+ if (compile_options.allow_std < GFC_STD_GNU
+ && require_type (dtp, BT_INTEGER, type, f))
return;
if (dtp->u.p.mode == READING)
@@ -856,7 +858,11 @@ formatted_transfer_scalar (st_parameter_dt *dtp, bt type, void *p, int len,
case FMT_O:
if (n == 0)
- goto need_data;
+ goto need_data;
+
+ if (compile_options.allow_std < GFC_STD_GNU
+ && require_type (dtp, BT_INTEGER, type, f))
+ return;
if (dtp->u.p.mode == READING)
read_radix (dtp, f, p, len, 8);
@@ -869,6 +875,10 @@ formatted_transfer_scalar (st_parameter_dt *dtp, bt type, void *p, int len,
if (n == 0)
goto need_data;
+ if (compile_options.allow_std < GFC_STD_GNU
+ && require_type (dtp, BT_INTEGER, type, f))
+ return;
+
if (dtp->u.p.mode == READING)
read_radix (dtp, f, p, len, 16);
else