* write.c (write_float): A G edit descriptor may locally change
the scale factor, but it needs to be restored afterwards.
* gfortran.dg/pr20755.f: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@97627
138bc75d-0d04-0410-961f-
82ee72b054a4
+2005-04-05 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ PR libfortran/20755
+ * gfortran.dg/pr20755.f: New test.
+
2005-04-05 Feng Wang <fengwang@nudt.edu.cn>
* gfortran.dg/pr15959.f90: New test.
2005-04-05 Feng Wang <fengwang@nudt.edu.cn>
* gfortran.dg/pr15959.f90: New test.
--- /dev/null
+! PR libfortran/20755
+! { dg-do run }
+ character*30 s
+
+ write (s,2000) 0.0, 0.02
+ if (s .ne. " 0.00 2.000E-02") call abort
+ write (s,2000) 0.01, 0.02
+ if (s .ne. " 1.000E-02 2.000E-02") call abort
+ 2000 format (1P2G12.3)
+ end
+2005-04-05 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ PR libfortran/20755
+ * write.c (write_float): A G edit descriptor may locally change
+ the scale factor, but it needs to be restored afterwards.
+
2005-04-03 Dale Ranta <dir@lanl.gov>
Francois-Xavier Coudert <coudert@clipper.ens.fr>
2005-04-03 Dale Ranta <dir@lanl.gov>
Francois-Xavier Coudert <coudert@clipper.ens.fr>
write_float (fnode *f, const char *source, int len)
{
double n;
write_float (fnode *f, const char *source, int len)
{
double n;
+ int nb =0, res, save_scale_factor;
char * p, fin;
fnode *f2 = NULL;
char * p, fin;
fnode *f2 = NULL;
+ save_scale_factor = g.scale_factor;
f2 = calculate_G_format(f, n, len, &nb);
output_float (f2, n, len);
f2 = calculate_G_format(f, n, len, &nb);
output_float (f2, n, len);
+ g.scale_factor = save_scale_factor;
if (f2 != NULL)
free_mem(f2);
if (f2 != NULL)
free_mem(f2);