re PR libfortran/83811 (fortran 'e' format broken for single digit exponents)

2018-01-18  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

        PR libgfortran/83811
        * write.c (select_buffer): Adjust buffer size up by 1.

        * gfortran.dg/fmt_e.f90: New test.

From-SVN: r256669
This commit is contained in:
Jerry DeLisle 2018-01-14 17:36:29 +00:00
parent a61bac1ea9
commit 33b2b069c1
4 changed files with 23 additions and 2 deletions

View file

@ -1,3 +1,8 @@
2018-01-18 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/83811
* gfortran.dg/fmt_e.f90: New test.
2018-01-14 H.J. Lu <hongjiu.lu@intel.com>
* gcc.target/i386/indirect-thunk-10.c: New test.

View file

@ -0,0 +1,10 @@
! { dg-do run }
! PR83811 fortran 'e' format broken for single digit exponents
program test
character(25) :: s
write(s, '(1pe5.0e1)') 1.e-4
if (s.ne."1.E-4") call abort
write(s, '(e5.1e1)') 1.e12
if (s.ne."*****") call abort
end

View file

@ -1,3 +1,8 @@
2018-01-18 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/83811
* write.c (select_buffer): Adjust buffer size up by 1.
2018-01-08 Janne Blomqvist <jb@gcc.gnu.org>
PR 78534, bugfix for r256322

View file

@ -1519,8 +1519,9 @@ select_buffer (st_parameter_dt *dtp, const fnode *f, int precision,
{
char *result;
/* The buffer needs at least one more byte to allow room for normalizing. */
*size = size_from_kind (dtp, f, kind) + precision + 1;
/* The buffer needs at least one more byte to allow room for
normalizing and 1 to hold null terminator. */
*size = size_from_kind (dtp, f, kind) + precision + 1 + 1;
if (*size > BUF_STACK_SZ)
result = xmalloc (*size);