OSDN Git Service

2010-10-26 Jerry DeLisle <jvdelisle@gcc.gnu.org>
authorjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 26 Oct 2010 19:05:08 +0000 (19:05 +0000)
committerjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 26 Oct 2010 19:05:08 +0000 (19:05 +0000)
PR libgfortran/46010
* io/list_read.c (nml_parse_qualifier): Add additional conditions for
setting the end index for loop specification. Fix some whitespace.
* io/write.c (write_default_char4): Const-ify the source argument.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@165979 138bc75d-0d04-0410-961f-82ee72b054a4

libgfortran/ChangeLog
libgfortran/io/list_read.c
libgfortran/io/write.c

index 5b06cef..d5e047e 100644 (file)
@@ -1,3 +1,10 @@
+2010-10-26  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR libgfortran/46010
+       * io/list_read.c (nml_parse_qualifier): Add additional conditions for
+       setting the end index for loop specification. Fix some whitespace.
+       * io/write.c (write_default_char4): Const-ify the source argument.
+
 2010-10-21  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
        PR fortran/46007
index 113b469..7fa57f5 100644 (file)
@@ -2105,8 +2105,10 @@ nml_parse_qualifier (st_parameter_dt *dtp, descriptor_dimension *ad,
 
                  /*  If -std=f95/2003 or an array section is specified,
                      do not allow excess data to be processed.  */
-                  if (is_array_section == 1
-                     || !(compile_options.allow_std & GFC_STD_GNU))
+                 if (is_array_section == 1
+                     || !(compile_options.allow_std & GFC_STD_GNU)
+                     || !dtp->u.p.ionml->touched
+                     || dtp->u.p.ionml->type == BT_DERIVED)
                    ls[dim].end = ls[dim].start;
                  else
                    dtp->u.p.expanded_read = 1;
@@ -2121,12 +2123,12 @@ nml_parse_qualifier (st_parameter_dt *dtp, descriptor_dimension *ad,
        }
 
       if (is_array_section == 1 && dtp->u.p.expanded_read == 1)
-       {
+       {
          int i;
          dtp->u.p.expanded_read = 0;
          for (i = 0; i < dim; i++)
            ls[i].end = ls[i].start;
-       }
+       }
 
       /* Check the values of the triplet indices.  */
       if ((ls[dim].start > (ssize_t) GFC_DIMENSION_UBOUND(ad[dim]))
index 0a6aee1..5afbbd5 100644 (file)
@@ -65,7 +65,7 @@ memcpy4 (gfc_char4_t *dest, const char *source, int k)
 /* Write out default char4.  */
 
 static void
-write_default_char4 (st_parameter_dt *dtp, gfc_char4_t *source,
+write_default_char4 (st_parameter_dt *dtp, const gfc_char4_t *source,
                     int src_len, int w_len)
 {
   char *p;