===================================================================
@@ -2105,8 +2105,10 @@ nml_parse_qualifier (st_parameter_dt *dtp, descrip
/* 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, descrip
}
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]))
===================================================================
@@ -65,7 +65,7 @@ memcpy4 (gfc_char4_t *dest, const char *source, in
/* 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;