In perl.git, the branch blead has been updated

<http://perl5.git.perl.org/perl.git/commitdiff/42262fd376c1e577f7a3a11ba0a606c6a3de1567?hp=7e234f81b6d7325dd91edae7737f9bd69a91fc73>

- Log -----------------------------------------------------------------
commit 42262fd376c1e577f7a3a11ba0a606c6a3de1567
Author: Jarkko Hietaniemi <[email protected]>
Date:   Sun Sep 21 16:17:06 2014 -0400

    Comments on unpack 'D' and long doubles formats.
-----------------------------------------------------------------------

Summary of changes:
 pp_pack.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/pp_pack.c b/pp_pack.c
index d35a5af..dbbf2e9 100644
--- a/pp_pack.c
+++ b/pp_pack.c
@@ -1698,6 +1698,18 @@ S_unpack_rec(pTHX_ tempsym_t* symptr, const char *s, 
const char *strbeg, const c
                ld_bytes aldouble;
                 SHIFT_BYTES(utf8, s, strend, aldouble.bytes,
                             sizeof(aldouble.bytes), datumtype, needs_swap);
+                /* The most common long double format, the x86 80-bit
+                 * extended precision, has either 2 or 6 unused bytes,
+                 * which may contain garbage, which may contain
+                 * unintentional data.  While we do zero the bytes of
+                 * the long double data in pack(), here in unpack() we
+                 * don't, because it's really hard to envision that
+                 * reading the long double off aldouble would be
+                 * affected the unused bytes.
+                 *
+                 * Note that trying to unpack 'long doubles' of 'long
+                 * doubles' packed in another system is in the general
+                 * case doomed without having more detail. */
                if (!checksum)
                    mPUSHn(aldouble.ld);
                else

--
Perl5 Master Repository

Reply via email to