aboutsummaryrefslogtreecommitdiff
path: root/libgfortran
diff options
context:
space:
mode:
authorJerry DeLisle <jvdelisle@gcc.gnu.org>2010-02-25 05:47:10 +0000
committerJerry DeLisle <jvdelisle@gcc.gnu.org>2010-02-25 05:47:10 +0000
commit598d5e195cd5fb51b8454af0797c4e9a40db5416 (patch)
tree87fefa147788c965881d2bd146799466d9e3ed69 /libgfortran
parent4c67b23de7ba3e36d9a9d03ef16e808f78935a07 (diff)
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: https://gcc.gnu.org/svn/gcc/trunk@157060 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgfortran')
-rw-r--r--libgfortran/ChangeLog6
-rw-r--r--libgfortran/io/transfer.c9
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,