[Bug fortran/60148] strings in NAMELIST do not honor DELIM= in open statement
jvdelisle at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Feb 13 02:26:00 GMT 2014
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60148
--- Comment #7 from Jerry DeLisle <jvdelisle at gcc dot gnu.org> ---
The regressions are two fold:
1) Tests are specifically looking for a " or a ' when no longer generated,
and
2) We need to also revise namelist reading of character types which are no
longer delimited
namelist_18.f90, modify test
namelist_38.f90, error in read
namelist_56.f90, ...
namelist_70.f90, ...
My patch is as follows so far, a little different from Steve's. With this patch
I don't explicitly write a space delim because we write one in the first chunk
below. This was needed for namelist_16.f90
Index: write.c
===================================================================
--- write.c (revision 206864)
+++ write.c (working copy)
@@ -1921,7 +1921,8 @@
to column 2. Reset the repeat counter. */
dtp->u.p.no_leading_blank = 0;
- write_character (dtp, &semi_comma, 1, 1);
+ if (dtp->u.p.nml_delim || (obj->type != BT_CHARACTER))
+ write_character (dtp, &semi_comma, 1, 1);
if (num > 5)
{
num = 0;
@@ -1971,9 +1972,18 @@
/* Set the delimiter for namelist output. */
tmp_delim = dtp->u.p.current_unit->delim_status;
+ switch (tmp_delim)
+ {
+ case DELIM_APOSTROPHE:
+ dtp->u.p.nml_delim = '\'';
+ break;
+ case DELIM_QUOTE:
+ dtp->u.p.nml_delim = '"';
+ break;
+ default:
+ dtp->u.p.nml_delim = '\0';
+ }
- dtp->u.p.nml_delim = tmp_delim == DELIM_APOSTROPHE ? '\'' : '"';
-
/* Temporarily disable namelist delimters. */
dtp->u.p.current_unit->delim_status = DELIM_NONE;
I have not looked at read yet.
More information about the Gcc-bugs
mailing list