re PR libfortran/19155 ([4.0 only] blanks not treated as zeros in 'E' format read (NIST FM110.FOR))

PR libfortran/19155
	* io/read.c (read_f): Accept 'e', 'E', 'd' and 'D' as first
	non-blank characters of a real number.
	* gfortran.dg/pr19155.f: New test.

From-SVN: r99424
This commit is contained in:
Francois-Xavier Coudert 2005-05-09 13:21:01 +02:00 committed by François-Xavier Coudert
parent 4bbcb8fcd4
commit 4581ba9d4f
4 changed files with 35 additions and 6 deletions

View File

@ -1,3 +1,8 @@
2005-05-09 Francois-Xavier Coudert <coudert@clipper.ens.fr>
PR libfortran/19155
* gfortran.dg/pr19155.f: New test.
2005-05-08 Roger Sayle <roger@eyesopen.com>
PR inline-asm/8788

View File

@ -0,0 +1,15 @@
! { dg-do run }
!
! PR libfortran/19155
! We accept 'E+00' as a valid real number. The standard says it is not,
! but doesn't require us to issue an error. Since g77 accepts this as zero,
! we do the same.
real a
a = 42
open (19,status='scratch')
write (19,'(A15)') 'E+00'
rewind (19)
read (19,'(E15.8)') a
if (a .ne. 0) call abort
close (19)
end

View File

@ -1,3 +1,9 @@
2005-05-09 Francois-Xavier Coudert <coudert@clipper.ens.fr>
PR libfortran/19155
* io/read.c (read_f): Accept 'e', 'E', 'd' and 'D' as first
non-blank characters of a real number.
2005-05-04 Thomas Koenig <Thomas.Koenig@online.de>
PR libfortran/21354

View File

@ -892,7 +892,7 @@ open_internal (char *base, int length)
* around it. */
static stream *
fd_to_stream (int fd, int prot)
fd_to_stream (int fd, int prot, int avoid_mmap)
{
struct stat statbuf;
unix_stream *s;
@ -911,7 +911,10 @@ fd_to_stream (int fd, int prot)
s->file_length = S_ISREG (statbuf.st_mode) ? statbuf.st_size : -1;
#if HAVE_MMAP
mmap_open (s);
if (avoid_mmap)
fd_open (s);
else
mmap_open (s);
#else
fd_open (s);
#endif
@ -1153,7 +1156,7 @@ open_external (unit_flags *flags)
internal_error ("open_external(): Bad action");
}
return fd_to_stream (fd, prot);
return fd_to_stream (fd, prot, 0);
}
@ -1163,7 +1166,7 @@ open_external (unit_flags *flags)
stream *
input_stream (void)
{
return fd_to_stream (STDIN_FILENO, PROT_READ);
return fd_to_stream (STDIN_FILENO, PROT_READ, 1);
}
@ -1173,7 +1176,7 @@ input_stream (void)
stream *
output_stream (void)
{
return fd_to_stream (STDOUT_FILENO, PROT_WRITE);
return fd_to_stream (STDOUT_FILENO, PROT_WRITE, 1);
}
@ -1183,7 +1186,7 @@ output_stream (void)
stream *
error_stream (void)
{
return fd_to_stream (STDERR_FILENO, PROT_WRITE);
return fd_to_stream (STDERR_FILENO, PROT_WRITE, 1);
}
/* init_error_stream()-- Return a pointer to the error stream. This