Commit 68537e59 authored by jvdelisle's avatar jvdelisle
Browse files

2007-04-01 Jerry DeLisle <jvdelisle@gcc.gnu.org>

	PR libgfortran/31366
	* io/transfer.c (read_block_direct): Do not generate error when reading
	past EOF on a short record that is less than the RECL= specified.
	
2007-04-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/31207
	* io/unit.c (close_unit_1): If there are bytes previously written from
	ADVANCE="no", move to the end before closing.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@123401 138bc75d-0d04-0410-961f-82ee72b054a4
parent 34a43822
2007-04-01 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/31366
* io/transfer.c (read_block_direct): Do not generate error when reading
past EOF on a short record that is less than the RECL= specified.
2007-04-01 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/31207
* io/unit.c (close_unit_1): If there are bytes previously written from
ADVANCE="no", move to the end before closing.
2007-03-31 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
PR libfortran/31335
......
......@@ -411,7 +411,6 @@ read_block_direct (st_parameter_dt *dtp, void *buf, size_t *nbytes)
/* Short read, e.g. if we hit EOF. Apparently, we read
more than was written to the last record. */
*nbytes = to_read_record;
generate_error (&dtp->common, ERROR_SHORT_RECORD, NULL);
return;
}
......
......@@ -590,6 +590,30 @@ close_unit_1 (gfc_unit *u, int locked)
{
int i, rc;
/* If there are previously written bytes from a write with ADVANCE="no"
Reposition the buffer before closing. */
if (u->saved_pos > 0)
{
char *p;
p = salloc_w (u->s, &u->saved_pos);
if (!(u->unit_number == options.stdout_unit
|| u->unit_number == options.stderr_unit))
{
size_t len;
const char crlf[] = "\r\n";
#ifdef HAVE_CRLF
len = 2;
#else
len = 1;
#endif
if (swrite (u->s, &crlf[2-len], &len) != 0)
os_error ("Close after ADVANCE_NO failed");
}
}
rc = (u->s == NULL) ? 0 : sclose (u->s) == FAILURE;
u->closed = 1;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment