+<<<<<<< .mine
+2007-10-04 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libfortran/33253
+ * io/list_read.c (read_character): Use line_buffer to scan ahead for
+ object name or string when no delimiter is found.
+
+=======
2007-10-04 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
PR libfortran/32021
fpu_precision, sighup, sigint, allocate_init_flag and
allocate_init_value.
+>>>>>>> .r129015
2007-10-02 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libfortran/33253
goto get_string;
default:
- if (dtp->u.p.namelist_mode
- && (dtp->u.p.current_unit->flags.delim == DELIM_APOSTROPHE
- || dtp->u.p.current_unit->flags.delim == DELIM_QUOTE
- || quote == ' '))
+ if (dtp->u.p.namelist_mode)
{
- unget_char (dtp,c);
- return;
+ if (dtp->u.p.current_unit->flags.delim == DELIM_APOSTROPHE
+ || dtp->u.p.current_unit->flags.delim == DELIM_QUOTE)
+ {
+ unget_char (dtp, c);
+ return;
+ }
+
+ /* Check to see if we are seeing a namelist object name by using the
+ line buffer and looking ahead for an '=' or '('. */
+ l_push_char (dtp, c);
+
+ int i;
+ for(i = 0; i < 63; i++)
+ {
+ c = next_char (dtp);
+ if (is_separator(c))
+ {
+ unget_char (dtp, c);
+ eat_separator (dtp);
+ c = next_char (dtp);
+ if (c != '=')
+ {
+ l_push_char (dtp, c);
+ dtp->u.p.item_count = 0;
+ dtp->u.p.line_buffer_enabled = 1;
+ goto get_string;
+ }
+ }
+
+ l_push_char (dtp, c);
+ if (c == '=' || c == '(')
+ {
+ dtp->u.p.item_count = 0;
+ dtp->u.p.nml_read_error = 1;
+ dtp->u.p.line_buffer_enabled = 1;
+ return;
+ }
+ }
+
+ /* The string is too long to be a valid object name so assume that it
+ is a string to be read in as a value. */
+ dtp->u.p.line_buffer_enabled = 1;
+ goto get_string;
}
+
push_char (dtp, c);
goto get_string;
}
unget_char (dtp, c);
eat_separator (dtp);
dtp->u.p.saved_type = BT_CHARACTER;
+ free_line (dtp);
}
else
{