]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR fortran/65541 (namelist regression)
authorJerry DeLisle <jvdelisle@gcc.gnu.org>
Thu, 26 Mar 2015 02:44:34 +0000 (02:44 +0000)
committerJerry DeLisle <jvdelisle@gcc.gnu.org>
Thu, 26 Mar 2015 02:44:34 +0000 (02:44 +0000)
2015-03-25 Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR libgfortran/65541
* io/write.c (nml_write_obj): Convert '+' to '%' before emitting
object names in namelists.

From-SVN: r221682

libgfortran/ChangeLog
libgfortran/io/write.c

index d66fc4b6bece79061926af11ecb0795495d1ea9e..c96826a87748619986b44055314df6b43f440c0a 100644 (file)
@@ -1,3 +1,9 @@
+2015-03-25 Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR libgfortran/65541
+       * io/write.c (nml_write_obj): Convert '+' to '%' before emitting
+       object names in namelists.
+
 2015-03-22 Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        PR libgfortran/59513
index 3e890b981d123e19fb1280efab0b66b566ffaaa0..75996598d0af2fc41d2b01efe86a5e94c2c4a98b 100644 (file)
@@ -1704,10 +1704,11 @@ nml_write_obj (st_parameter_dt *dtp, namelist_info * obj, index_type offset,
   size_t clen;
   index_type elem_ctr;
   size_t obj_name_len;
-  void * p ;
+  void * p;
   char cup;
   char * obj_name;
   char * ext_name;
+  char * q;
   size_t ext_name_len;
   char rep_buff[NML_DIGITS];
   namelist_info * cmp;
@@ -1745,6 +1746,8 @@ nml_write_obj (st_parameter_dt *dtp, namelist_info * obj, index_type offset,
       for (dim_i = len; dim_i < clen; dim_i++)
        {
          cup = toupper ((int) obj->var_name[dim_i]);
+         if (cup == '+')
+           cup = '%';
          write_character (dtp, &cup, 1, 1, NODELIM);
        }
       write_character (dtp, "=", 1, 1, NODELIM);
@@ -1894,6 +1897,9 @@ nml_write_obj (st_parameter_dt *dtp, namelist_info * obj, index_type offset,
                }
 
              ext_name[tot_len] = '\0';
+             for (q = ext_name; *q; q++)
+               if (*q == '+')
+                 *q = '%';
 
              /* Now obj_name.  */