diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index ff9e599edc55991efd68b0f38c71a0909aa23aa4..5bfe9c36e103b4e3f5f32a39f749d9ba60638f0b 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -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 diff --git a/libgfortran/io/list_read.c b/libgfortran/io/list_read.c index 5ff4cbbc299d2be4d6d7c9acbdb41777cbf076b0..ab9b25d2ba48030c901b909e3dc1e4180bba70ef 100644 --- a/libgfortran/io/list_read.c +++ b/libgfortran/io/list_read.c @@ -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); }