Commit 7b7034ea by Jerry DeLisle

re PR libfortran/25697 (libfortran - Segmentation fault/ Bad Address on unformatted read)

2006-01-17  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/25697
	* io/transfer.c (us_read): Detect end of file condition from previous
	operations and bail out (no need to pre-position).

From-SVN: r109870
parent 3dd0df7f
2006-01-17 Jerry DeLisle <jvdelisle@gcc.gnu.org> 2006-01-17 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/25697
* io/transfer.c (us_read): Detect end of file condition from previous
operations and bail out (no need to pre-position).
2006-01-17 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/25631 PR libgfortran/25631
* io/transfer.c (formatted_transfer_scalar): Adjust pending_spaces and * io/transfer.c (formatted_transfer_scalar): Adjust pending_spaces and
skips so that TL works correctly when no bytes_used yet. skips so that TL works correctly when no bytes_used yet.
......
/* Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. /* Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
Contributed by Andy Vaught Contributed by Andy Vaught
Namelist transfer functions contributed by Paul Thomas Namelist transfer functions contributed by Paul Thomas
...@@ -1219,11 +1219,17 @@ us_read (st_parameter_dt *dtp) ...@@ -1219,11 +1219,17 @@ us_read (st_parameter_dt *dtp)
int n; int n;
gfc_offset i; gfc_offset i;
if (dtp->u.p.current_unit->endfile == AT_ENDFILE)
return;
n = sizeof (gfc_offset); n = sizeof (gfc_offset);
p = salloc_r (dtp->u.p.current_unit->s, &n); p = salloc_r (dtp->u.p.current_unit->s, &n);
if (n == 0) if (n == 0)
return; /* end of file */ {
dtp->u.p.current_unit->endfile = AT_ENDFILE;
return; /* end of file */
}
if (p == NULL || n != sizeof (gfc_offset)) if (p == NULL || n != sizeof (gfc_offset))
{ {
......
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