Re: Awk print statement alters the argument variable's content
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 signature.asc Description: PGP signature
Re: Awk print statement alters the argument variable's content
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": $ uname -srvmo CYGWIN_NT-10.0 2.6.1(0.305/5/3) 2016-12-16 11:55 x86_64 Cygwin $ awk --version GNU Awk 4.1.4, API: 1.1 (GNU MPFR 3.1.5, GNU MP 6.1.1) Copyright (C) 1989, 1991-2016 Free Software Foundation. -- Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Awk print statement alters the argument variable's content
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 -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple