[fix bug in print]
authorLarry Wall <lwall@netlabs.com>
Wed, 15 Mar 1995 16:34:28 +0000 (08:34 -0800)
committerAndy Dougherty <doughera@lafcol.lafayette.edu>
Tue, 14 Mar 1995 19:27:16 +0000 (19:27 +0000)
commit8bb9dbe4584e4740e744f2e392c02dc263a7baee
tree3d46266424a7fa20d5a67ac85d7a6100a9ab6911
parentcb0b1708c66ad12be7ce52c00b9565faecc67579
[fix bug in print]

: In perl 5.001 the print function now only outputs one significant digit for the
: the results of some mathematical functions.
:
: $ cat mine
: #!/usr/bin/perl
: print sqrt(2), "\n";
: print 4 * atan2(1,1), "\n";
: print log(2), "\n";
: $ ./mine
: 1
: 3
: 0

Okay, I understand how this one happened.  This is a case where a
beneficial fix uncovered a bug elsewhere.  I changed the constant
folder to prefer integer results over double if the numbers are the
same.  In this case, they aren't, but it leaves the integer value there
anyway because the storage is already allocated for it, and it *might*
be used in an integer context.  And since it's producing a constant, it
sets READONLY.  Unfortunately, sv_2pv() bogusly preferred the integer
value to the double when READONLY was set.  This never showed up if you
just said

    print 1.4142135623731;

because in that case, there was already a string value.

Larry
sv.c