From e23bc65b5d3a08714e3241be58b6245fe37a9f49 Mon Sep 17 00:00:00 2001 From: burnus Date: Sat, 28 Oct 2006 21:05:42 +0000 Subject: [PATCH 1/1] 2006-10-28 Tobias Burnus 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 --- libgfortran/ChangeLog | 7 +++++++ libgfortran/io/transfer.c | 14 ++++++++++++-- 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 + + 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 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 -- 2.11.0