re PR libfortran/16436 (gfortran TL edit descriptor failure - test f77-edit-t-in.f)
PR libfortran/16436 * io/transfer.c (read_sf): Correct updating of bytes_left field. (formatted_transfer): Correct updating of bytes_left field and reformatting code (comments and whitespace). * io/unix.c (move_pos_offset): "active" field should not be changed here. Whitespace corrections. * gfortran.dg/g77/f77-edit-t-in.f: Not XFAIL-ed any more. From-SVN: r101100
This commit is contained in:
parent
0518582d92
commit
2f06ccc69e
5 changed files with 33 additions and 25 deletions
|
@ -1,3 +1,8 @@
|
|||
2005-06-17 Francois-Xavier Coudert <coudert@clipper.ens.fr>
|
||||
|
||||
PR libfortran/16436
|
||||
* gfortran.dg/g77/f77-edit-t-in.f: Not XFAIL-ed any more.
|
||||
|
||||
2005-06-16 Richard Guenther <rguenth@gcc.gnu.org>
|
||||
|
||||
* gcc.target/i386/attributes-error.c: New testcase.
|
||||
|
|
|
@ -3,7 +3,7 @@ C (ANSI X3.9-1978 Section 13.5.3.2)
|
|||
C
|
||||
C Origin: David Billinghurst <David.Billinghurst@riotinto.com>
|
||||
C
|
||||
C { dg-do run {xfail *-*-*} } gfortran PR 16436
|
||||
C { dg-do run }
|
||||
integer i,j
|
||||
real a,b,c,d,e
|
||||
character*32 in
|
||||
|
|
|
@ -1,3 +1,12 @@
|
|||
2005-06-17 Francois-Xavier Coudert <coudert@clipper.ens.fr>
|
||||
|
||||
PR libfortran/16436
|
||||
* io/transfer.c (read_sf): Correct updating of bytes_left field.
|
||||
(formatted_transfer): Correct updating of bytes_left field and
|
||||
reformatting code (comments and whitespace).
|
||||
* io/unix.c (move_pos_offset): "active" field should not be
|
||||
changed here. Whitespace corrections.
|
||||
|
||||
2005-06-15 Francois-Xavier Coudert <coudert@clipper.ens.fr>
|
||||
|
||||
PR libfortran/21950
|
||||
|
|
|
@ -160,7 +160,6 @@ read_sf (int *length)
|
|||
return base;
|
||||
}
|
||||
|
||||
current_unit->bytes_left = options.default_recl;
|
||||
readlen = 1;
|
||||
n = 0;
|
||||
|
||||
|
@ -214,6 +213,7 @@ read_sf (int *length)
|
|||
sf_seen_eor = 0;
|
||||
}
|
||||
while (n < *length);
|
||||
current_unit->bytes_left -= *length;
|
||||
|
||||
if (ioparm.size != NULL)
|
||||
*ioparm.size += *length;
|
||||
|
@ -675,22 +675,19 @@ formatted_transfer (bt type, void *p, int len)
|
|||
|
||||
case FMT_TL:
|
||||
case FMT_T:
|
||||
if (f->format==FMT_TL)
|
||||
if (f->format == FMT_TL)
|
||||
pos = current_unit->recl - current_unit->bytes_left - f->u.n;
|
||||
else /* FMT_T */
|
||||
{
|
||||
pos = f->u.n ;
|
||||
pos= current_unit->recl - current_unit->bytes_left - pos;
|
||||
}
|
||||
else // FMT==T
|
||||
{
|
||||
consume_data_flag = 0 ;
|
||||
pos = f->u.n - 1;
|
||||
consume_data_flag = 0;
|
||||
pos = f->u.n - 1;
|
||||
}
|
||||
|
||||
if (pos < 0 || pos >= current_unit->recl )
|
||||
{
|
||||
generate_error (ERROR_EOR, "T Or TL edit position error");
|
||||
break ;
|
||||
}
|
||||
{
|
||||
generate_error (ERROR_EOR, "T Or TL edit position error");
|
||||
break ;
|
||||
}
|
||||
m = pos - (current_unit->recl - current_unit->bytes_left);
|
||||
|
||||
if (m == 0)
|
||||
|
@ -707,6 +704,7 @@ formatted_transfer (bt type, void *p, int len)
|
|||
if (m < 0)
|
||||
{
|
||||
move_pos_offset (current_unit->s,m);
|
||||
current_unit->bytes_left -= m;
|
||||
}
|
||||
|
||||
break;
|
||||
|
|
|
@ -154,26 +154,22 @@ move_pos_offset (stream* st, int pos_off)
|
|||
unix_stream * str = (unix_stream*)st;
|
||||
if (pos_off < 0)
|
||||
{
|
||||
str->active += pos_off;
|
||||
if (str->active < 0)
|
||||
str->active = 0;
|
||||
str->logical_offset += pos_off;
|
||||
|
||||
str->logical_offset += pos_off;
|
||||
|
||||
if (str->dirty_offset+str->ndirty > str->logical_offset)
|
||||
if (str->dirty_offset + str->ndirty > str->logical_offset)
|
||||
{
|
||||
if (str->ndirty + pos_off > 0)
|
||||
str->ndirty += pos_off ;
|
||||
if (str->ndirty + pos_off > 0)
|
||||
str->ndirty += pos_off;
|
||||
else
|
||||
{
|
||||
str->dirty_offset += pos_off + pos_off;
|
||||
str->ndirty = 0 ;
|
||||
str->ndirty = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return pos_off ;
|
||||
return pos_off;
|
||||
}
|
||||
return 0 ;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue