This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Fix NaN double to long double conversion on VMS.
authorCraig A. Berry <craigberry@mac.com>
Sat, 20 Sep 2014 15:40:35 +0000 (10:40 -0500)
committerCraig A. Berry <craigberry@mac.com>
Sat, 20 Sep 2014 17:43:01 +0000 (12:43 -0500)
commitfdb7e3a630fea8155647331d5f9e2a4a0384adba
tree6ce1900396511f1c04eb4ece37a467145b7725e1
parent1197364c62629966dfaf5c3da0a72ea051ed91c2
Fix NaN double to long double conversion on VMS.

Promotion from double to long double on VMS is apparently done via
the math routine OTS$CVT_FLOAT_T_X, which seems to do the right
thing for ordinary values, infinities, and signaling NaNs.  But
for quiet NaNs (and only on Itanium, not Alpha) it produces a
negative infinity rather than a NaN.  Oops.

So hack around that by detecting NaN in the double and explicitly
setting it in the long double.  We can't use NV_NAN because this
is the code path in Perl_sv_vcatpvfn_flags where we have not
configured long doubles but are using the "fv" long double to format
output.
sv.c