diff options
author | jvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-02-25 05:47:10 +0000 |
---|---|---|
committer | jvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-02-25 05:47:10 +0000 |
commit | 189b3ae955e8c1b796a570a046ab5926f87aa4ff (patch) | |
tree | 87fefa147788c965881d2bd146799466d9e3ed69 /libgfortran | |
parent | d3fddc907057b6e37cc96278d284b0a8df423b86 (diff) | |
download | gcc-189b3ae955e8c1b796a570a046ab5926f87aa4ff.tar.gz |
2010-02-24 Jerry DeLisle <jvdelisle@gcc.gnu.org>
* io/transfer.c (require_type): Subtract one from item_count for output
of error message. Add comment before formatted_transfer function
explaining why the item_count is off by one.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@157060 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgfortran')
-rw-r--r-- | libgfortran/ChangeLog | 6 | ||||
-rw-r--r-- | libgfortran/io/transfer.c | 9 |
2 files changed, 14 insertions, 1 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index b674f5c3466..785a3a8c838 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,9 @@ +2010-02-24 Jerry DeLisle <jvdelisle@gcc.gnu.org> + + * io/transfer.c (require_type): Subtract one from item_count for output + of error message. Add comment before formatted_transfer function + explaining why the item_count is off by one. + 2010-02-24 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> * io/write_float.def (WRITE_FLOAT): Use __builtin_signbit. diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c index e627a1c7590..63a18a6ef3b 100644 --- a/libgfortran/io/transfer.c +++ b/libgfortran/io/transfer.c @@ -925,8 +925,9 @@ require_type (st_parameter_dt *dtp, bt expected, bt actual, const fnode *f) if (actual == expected) return 0; + /* Adjust item_count before emitting error message. */ sprintf (buffer, "Expected %s for item %d in formatted transfer, got %s", - type_name (expected), dtp->u.p.item_count, type_name (actual)); + type_name (expected), dtp->u.p.item_count - 1, type_name (actual)); format_error (dtp, f, buffer); return 1; @@ -1703,6 +1704,12 @@ formatted_transfer_scalar_write (st_parameter_dt *dtp, bt type, void *p, int kin unget_format (dtp, f); } + /* This function is first called from data_init_transfer to initiate the loop + over each item in the format, transferring data as required. Subsequent + calls to this function occur for each data item foound in the READ/WRITE + statement. The item_count is incremented for each call. Since the first + call is from data_transfer_init, the item_count is always one greater than + the actual count number of the item being transferred. */ static void formatted_transfer (st_parameter_dt *dtp, bt type, void *p, int kind, |