re PR fortran/35627 (namelist read error)
2008-03-19 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libfortran/35627 * io/list_read.c (free_line): Clear the line buffer enable flag and reset the index into line_buffer, aka item_count. (next_char): Cleanup whitespace. (read_logical): Use unget_char to assure that the first character of the bad logical is saved in case it is part of an object name. Remove the clearing of index and flag that is now in free_line. (read_real): Likewise. From-SVN: r133360
This commit is contained in:
parent
31e6722c27
commit
17f46ec355
2 changed files with 19 additions and 8 deletions
|
@ -1,3 +1,14 @@
|
|||
2008-03-19 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
||||
|
||||
PR libfortran/35627
|
||||
* io/list_read.c (free_line): Clear the line buffer enable flag and
|
||||
reset the index into line_buffer, aka item_count.
|
||||
(next_char): Cleanup whitespace.
|
||||
(read_logical): Use unget_char to assure that the first character of the
|
||||
bad logical is saved in case it is part of an object name. Remove the
|
||||
clearing of index and flag that is now in free_line.
|
||||
(read_real): Likewise.
|
||||
|
||||
2008-03-19 Thomas Koenig <tkoenig@gcc.gnu.org>
|
||||
|
||||
PR libfortran/32972
|
||||
|
|
|
@ -120,6 +120,9 @@ free_saved (st_parameter_dt *dtp)
|
|||
static void
|
||||
free_line (st_parameter_dt *dtp)
|
||||
{
|
||||
dtp->u.p.item_count = 0;
|
||||
dtp->u.p.line_buffer_enabled = 0;
|
||||
|
||||
if (dtp->u.p.line_buffer == NULL)
|
||||
return;
|
||||
|
||||
|
@ -157,8 +160,8 @@ next_char (st_parameter_dt *dtp)
|
|||
goto done;
|
||||
}
|
||||
|
||||
dtp->u.p.item_count = 0;
|
||||
dtp->u.p.line_buffer_enabled = 0;
|
||||
dtp->u.p.item_count = 0;
|
||||
dtp->u.p.line_buffer_enabled = 0;
|
||||
}
|
||||
|
||||
/* Handle the end-of-record and end-of-file conditions for
|
||||
|
@ -685,6 +688,9 @@ read_logical (st_parameter_dt *dtp, int length)
|
|||
return; /* Null value. */
|
||||
|
||||
default:
|
||||
/* Save the character in case it is the beginning
|
||||
of the next object name. */
|
||||
unget_char (dtp, c);
|
||||
goto bad_logical;
|
||||
}
|
||||
|
||||
|
@ -700,8 +706,6 @@ read_logical (st_parameter_dt *dtp, int length)
|
|||
|
||||
unget_char (dtp, c);
|
||||
eat_separator (dtp);
|
||||
dtp->u.p.item_count = 0;
|
||||
dtp->u.p.line_buffer_enabled = 0;
|
||||
set_integer ((int *) dtp->u.p.value, v, length);
|
||||
free_line (dtp);
|
||||
|
||||
|
@ -755,8 +759,6 @@ read_logical (st_parameter_dt *dtp, int length)
|
|||
|
||||
logical_done:
|
||||
|
||||
dtp->u.p.item_count = 0;
|
||||
dtp->u.p.line_buffer_enabled = 0;
|
||||
dtp->u.p.saved_type = BT_LOGICAL;
|
||||
dtp->u.p.saved_length = length;
|
||||
set_integer ((int *) dtp->u.p.value, v, length);
|
||||
|
@ -1640,8 +1642,6 @@ read_real (st_parameter_dt *dtp, int length)
|
|||
push_char (dtp, 'n');
|
||||
}
|
||||
|
||||
dtp->u.p.item_count = 0;
|
||||
dtp->u.p.line_buffer_enabled = 0;
|
||||
free_line (dtp);
|
||||
goto done;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue