re PR fortran/26554 ([gfortran] incorrect behaviour when reading a logical variable from a string)

2006-03-05  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/26554
	* io/list_read.c (read_logical): Return the value if not in namelist
	mode.

From-SVN: r111738
This commit is contained in:
Jerry DeLisle 2006-03-05 17:54:07 +00:00
parent 0bf8477d98
commit 03e957f8c8
2 changed files with 22 additions and 7 deletions

View File

@ -1,3 +1,9 @@
2006-03-05 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/26554
* io/list_read.c (read_logical): Return the value if not in namelist
mode.
2006-03-03 Thomas Koenig <Thomas.Koenig@online.de>
PR fortran/25031

View File

@ -647,18 +647,17 @@ read_logical (st_parameter_dt *dtp, int length)
c = next_char (dtp);
if (is_separator(c))
{
/* All done if this is not a namelist read. */
if (!dtp->u.p.namelist_mode)
goto logical_done;
unget_char (dtp, c);
eat_separator (dtp);
c = next_char (dtp);
if (c != '=')
{
unget_char (dtp, c);
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);
return;
goto logical_done;
}
}
@ -670,7 +669,8 @@ read_logical (st_parameter_dt *dtp, int length)
dtp->u.p.item_count = 0;
return;
}
}
}
bad_logical:
@ -681,6 +681,15 @@ read_logical (st_parameter_dt *dtp, int length)
dtp->u.p.item_count);
generate_error (&dtp->common, ERROR_READ_VALUE, message);
return;
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);
}