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