In perl.git, the branch blead has been updated <http://perl5.git.perl.org/perl.git/commitdiff/6b2c7479d6d33249c2385d8a36d8ee9e61e1a519?hp=3816c65ffd171a2958146bc01b5baa54793cd5fc>
- Log ----------------------------------------------------------------- commit 6b2c7479d6d33249c2385d8a36d8ee9e61e1a519 Author: Niko Tyni <[email protected]> Date: Sat Nov 19 09:45:45 2016 +0200 Configure: also zero out high bytes of 80-bit ldnan These are currently zero anyway, but things are probably not guaranteed to stay so. M Configure commit dd6885360b15e763e0706dc28555eea328de432d Author: Niko Tyni <[email protected]> Date: Fri Nov 18 18:36:34 2016 +0200 Configure: fix garbage filtering with 80-bit long doubles The test had several problems that resulted in the excess bytes not getting zeroed out. This caused random contents in $Config{longdblinfbytes}, observed on Debian with GCC 6.2.0 (but not 5.4.1). Bug-Debian: https://bugs.debian.org/844752 M Configure ----------------------------------------------------------------------- Summary of changes: Configure | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Configure b/Configure index 6a3d617..845fc43 100755 --- a/Configure +++ b/Configure @@ -20661,8 +20661,8 @@ $cat >try.c <<EOP #define DOUBLESIZE $doublesize #$d_longdbl HAS_LONG_DOUBLE #ifdef HAS_LONG_DOUBLE -#define LONGDBLSIZE $longdblsize -#define LONGDBLKIND $longdblkind +#define LONG_DOUBLESIZE $longdblsize +#define LONG_DOUBLEKIND $longdblkind #endif #$i_math I_MATH #ifdef I_MATH @@ -20699,16 +20699,15 @@ int main(int argc, char *argv[]) { #ifdef HAS_LONG_DOUBLE long double ldinf = (long double)exp(1e9); long double ldnan = (long double)sqrt(-1.0); -#endif - if (argc == 2) { - switch (argv[1][0]) { - case '1': bytes(&dinf, sizeof(dinf)); break; - case '2': bytes(&dnan, sizeof(dnan)); break; -#ifdef HAS_LONG_DOUBLE # if LONG_DOUBLEKIND == 3 || LONG_DOUBLEKIND == 4 /* the 80-bit long doubles might have garbage in their excess bytes */ memset((char *)&ldinf + 10, '\0', LONG_DOUBLESIZE - 10); + memset((char *)&ldnan + 10, '\0', LONG_DOUBLESIZE - 10); # endif + if (argc == 2) { + switch (argv[1][0]) { + case '1': bytes(&dinf, sizeof(dinf)); break; + case '2': bytes(&dnan, sizeof(dnan)); break; case '3': bytes(&ldinf, sizeof(ldinf)); break; case '4': bytes(&ldnan, sizeof(ldnan)); break; #endif -- Perl5 Master Repository
