Hi all,
The attached patch fixes this regression and retains the desired behavior for
PR46800. We don't have a test case for PR46800 since it involves user input at a
terminal. (It would be good to get such a test case of course)
This patch has been regression tested with 4.9 and 4.10 on x86-64 linux.
OK for trunk and then 4.9? Test case from PR.
Regards,
Jerry
2014-05-04 Jerry DeLisle <[email protected]>
PR libfortran/61049
* io/list_read.c (list_formatted_read_scalar): Use eat_separator
and delete extraneous code.
Index: list_read.c
===================================================================
--- list_read.c (revision 210049)
+++ list_read.c (working copy)
@@ -2054,21 +2078,10 @@ list_formatted_read_scalar (st_parameter_dt *dtp,
}
if (is_separator (c))
{
- /* Found a null value. Do not use eat_separator here otherwise
- we will do an extra read from stdin. */
+ /* Found a null value. */
dtp->u.p.repeat_count = 0;
+ eat_separator (dtp);
- /* Set comma_flag. */
- if ((c == ';'
- && dtp->u.p.current_unit->decimal_status == DECIMAL_COMMA)
- ||
- (c == ','
- && dtp->u.p.current_unit->decimal_status == DECIMAL_POINT))
- {
- dtp->u.p.comma_flag = 1;
- goto cleanup;
- }
-
/* Set end-of-line flag. */
if (c == '\n' || c == '\r')
{
@@ -2082,7 +2095,6 @@ list_formatted_read_scalar (st_parameter_dt *dtp,
else
goto cleanup;
}
-
}
else
{
c { dg-do run }
c PR61049, reduced test case by Dominique d'Humieres
character(len=30) :: buff = ", (2.0, 3.0),,6.0D0, 2*,"
DOUBLE PRECISION AVD, BVD, CVD, DVCORR
COMPLEX AVC, BVC, CVC, ZVCORR
read(buff, *, err=10) AVD, AVC, BVC, BVD, CVC, CVD
goto 20
10 call abort
20 continue
end