This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Separate the extraction of hex values.
authorJarkko Hietaniemi <jhi@iki.fi>
Sat, 16 Aug 2014 15:27:52 +0000 (11:27 -0400)
committerJarkko Hietaniemi <jhi@iki.fi>
Sun, 17 Aug 2014 13:41:07 +0000 (09:41 -0400)
commitcf4f60037a32b53dd09c94455f6d3684f353d717
tree311c4a500085c0040b537af7af8e91ee171e5c5d
parent6bdb88770f849c47b5c09e733ac460ce3e9dbc97
Separate the extraction of hex values.

This way we can call it twice: first to count the size of output (and
sanity check the extraction indices), and the second time to actually
extract.  Otherwise with bad extraction code we will smash the stack.

Furthermore, this makes for cleaner code since the large #ifdef forest
(about differing long double formats, and different uv/nv/quad sizes)
is moved within the helper function.

Furthermore: IEEE 754 128-bit extraction was extracting wrong:
we need only the mantissa bits, and in the right nybble order.

Last but not least, handle the 'implicit bit' of IEEE 754 quadruple
and double-double (but which is explicitly *not* in the 80-bit format).
(If we handled the standard 64-bit format by explicit byte extraction,
instead of frexp+ldexp the hidden bit would be needed there, too.)
pod/perldiag.pod
sv.c