re PR libfortran/38097 (I/O with blanks in exponent fails; blank="NULL", BN edit descriptor)
2008-11-16 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR libfortran/38097 * io/read.c (read_f): Initialize exponent. Fix comment. Set loop conditions for BZ/BN. * io/unit.c (get_internal_unit): Initialize flags.blank. * io/transfer.c (data_transfer_init): Fix whitespace. From-SVN: r141919
This commit is contained in:
parent
459348d41e
commit
264a5255d8
@ -1,3 +1,11 @@
|
||||
2008-11-16 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
||||
|
||||
PR libfortran/38097
|
||||
* io/read.c (read_f): Initialize exponent. Fix comment. Set loop
|
||||
conditions for BZ/BN.
|
||||
* io/unit.c (get_internal_unit): Initialize flags.blank.
|
||||
* io/transfer.c (data_transfer_init): Fix whitespace.
|
||||
|
||||
2008-11-15 Jerry DeLisle <jvdelisle@gcc.gnu.org>
|
||||
|
||||
PR libfortran/37294
|
||||
|
@ -956,14 +956,9 @@ read_f (st_parameter_dt *dtp, const fnode *f, char *dest, int length)
|
||||
of the exponent in order to take account of the scale factor and
|
||||
the d parameter before explict conversion takes place. */
|
||||
exp2:
|
||||
if (!isdigit (*p))
|
||||
goto bad_float;
|
||||
|
||||
exponent = *p - '0';
|
||||
p++;
|
||||
w--;
|
||||
|
||||
if (dtp->u.p.blank_status == BLANK_UNSPECIFIED) /* Normal processing of exponent */
|
||||
/* Normal processing of exponent */
|
||||
exponent = 0;
|
||||
if (dtp->u.p.blank_status == BLANK_UNSPECIFIED)
|
||||
{
|
||||
while (w > 0 && isdigit (*p))
|
||||
{
|
||||
@ -984,7 +979,7 @@ read_f (st_parameter_dt *dtp, const fnode *f, char *dest, int length)
|
||||
}
|
||||
else /* BZ or BN status is enabled */
|
||||
{
|
||||
while (w > 0)
|
||||
while (w > 0 && (isdigit (*p) || *p == ' '))
|
||||
{
|
||||
if (*p == ' ')
|
||||
{
|
||||
|
@ -2102,7 +2102,7 @@ data_transfer_init (st_parameter_dt *dtp, int read_flag)
|
||||
|
||||
if (dtp->u.p.blank_status == BLANK_UNSPECIFIED)
|
||||
dtp->u.p.blank_status = dtp->u.p.current_unit->flags.blank;
|
||||
|
||||
|
||||
/* Check the delim mode. */
|
||||
dtp->u.p.current_unit->delim_status
|
||||
= !(cf & IOPARM_DT_HAS_DELIM) ? DELIM_UNSPECIFIED :
|
||||
|
@ -437,6 +437,7 @@ get_internal_unit (st_parameter_dt *dtp)
|
||||
|
||||
iunit->flags.access = ACCESS_SEQUENTIAL;
|
||||
iunit->flags.action = ACTION_READWRITE;
|
||||
iunit->flags.blank = BLANK_UNSPECIFIED;
|
||||
iunit->flags.form = FORM_FORMATTED;
|
||||
iunit->flags.pad = PAD_YES;
|
||||
iunit->flags.status = STATUS_UNSPECIFIED;
|
||||
@ -448,7 +449,6 @@ get_internal_unit (st_parameter_dt *dtp)
|
||||
/* Initialize the data transfer parameters. */
|
||||
|
||||
dtp->u.p.advance_status = ADVANCE_YES;
|
||||
dtp->u.p.blank_status = BLANK_UNSPECIFIED;
|
||||
dtp->u.p.seen_dollar = 0;
|
||||
dtp->u.p.skips = 0;
|
||||
dtp->u.p.pending_spaces = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user