+2008-11-15 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libfortran/37294
+ * io/write.c (namelist_write_newline): Use array loop specification to
+ advance to next internal array unit record. (namelist_write): Adjust to
+ accomodate the internal array unit behavior.
+
2008-11-01 Dennis Wassel <dennis.wassel@gmail.com>
PR fortran/37159
#else
write_character (dtp, "\n", 1, 1);
#endif
+ return;
+ }
+
+ if (is_array_io (dtp))
+ {
+ gfc_offset record;
+ int finished, length;
+
+ length = (int) dtp->u.p.current_unit->bytes_left;
+
+ /* Now that the current record has been padded out,
+ determine where the next record in the array is. */
+ record = next_array_record (dtp, dtp->u.p.current_unit->ls,
+ &finished);
+ if (finished)
+ dtp->u.p.current_unit->endfile = AT_ENDFILE;
+ else
+ {
+ /* Now seek to this record */
+ record = record * dtp->u.p.current_unit->recl;
+
+ if (sseek (dtp->u.p.current_unit->s, record) == FAILURE)
+ {
+ generate_error (&dtp->common, LIBERROR_INTERNAL_UNIT, NULL);
+ return;
+ }
+
+ dtp->u.p.current_unit->bytes_left = dtp->u.p.current_unit->recl;
+ }
}
else
write_character (dtp, " ", 1, 1);
}
}
- write_character (dtp, " /", 1, 3);
namelist_write_newline (dtp);
+ write_character (dtp, " /", 1, 2);
/* Restore the original delimiter. */
dtp->u.p.current_unit->delim_status = tmp_delim;
}