Awk print statement alters the argument variable's content

Corinna Vinschen corinna-cygwin@cygwin.com
Fri Jan 13 09:49:00 GMT 2017


On Jan 13 01:31, Brian Inglis wrote:
> On 2017-01-12 05:26, Lundberg Christer wrote:
> > This program run with GNU awk 4.1.4 (currently installed with
> > Cygwin):
> > 
> >   awk '
> >     BEGIN { OFMT="%.8g"
> >             buf = 1+0.1
> >             buf = buf "a"
> >             print "Length before print:", length(buf)
> >             print buf " "
> >             print buf
> >             print buf " "
> >             print "Length after print:", length(buf)
> >           }
> >   '
> > 
> > produces the following output on our system:
> > 
> > Length before print: 4
> > 1.1a 
> > 1.1
> > 1.1 
> > Length after print: 3
> > 
> > so it appears that the "print buf" statement unexpectedly alters the
> > content of buf.
> > With awk 4.1.3, we got the expected output
> > 
> > Length before print: 4
> > 1.1a 
> > 1.1a
> > 1.1a 
> > Length after print: 4
> 
> Confirmed problem with any OFMT except default or %.6g, also goes 
> away if you change awk line 3 to: buf = "" buf "a":

It's an upstream bug.  I asked on the gawk ML.


Thanks,
Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Maintainer                 cygwin AT cygwin DOT com
Red Hat
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://cygwin.com/pipermail/cygwin/attachments/20170113/491cc186/attachment.sig>


More information about the Cygwin mailing list