[haiku-commits] BRANCH xyzzy-github.x86_64 - src/system/libroot/posix/glibc/arch/x86

  • From: xyzzy-github.x86_64 <community@xxxxxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Tue, 14 Aug 2012 21:49:13 +0200 (CEST)

added 1 changeset to branch 'refs/remotes/xyzzy-github/x86_64'
old head: 4efc3430a040f033cdda576d1b32a762252afc24
new head: 91899cd48db3b6f176e38a4bdac02b9a074948ac

----------------------------------------------------------------------------

91899cd: Fix from glibc for possible crash when printf()'ing a long double.

                                      [ Alex Smith <alex@xxxxxxxxxxxxxxxx> ]

----------------------------------------------------------------------------

Commit:      91899cd48db3b6f176e38a4bdac02b9a074948ac

Author:      Alex Smith <alex@xxxxxxxxxxxxxxxx>
Date:        Tue Aug 14 19:08:42 2012 UTC

----------------------------------------------------------------------------

1 file changed, 9 insertions(+), 2 deletions(-)
src/system/libroot/posix/glibc/arch/x86/ldbl2mpn.c |   11 +++++++++--

----------------------------------------------------------------------------

diff --git a/src/system/libroot/posix/glibc/arch/x86/ldbl2mpn.c 
b/src/system/libroot/posix/glibc/arch/x86/ldbl2mpn.c
index bf4e4ff..4194b10 100644
--- a/src/system/libroot/posix/glibc/arch/x86/ldbl2mpn.c
+++ b/src/system/libroot/posix/glibc/arch/x86/ldbl2mpn.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995, 1996, 1997, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1995, 1996, 1997, 2000, 2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -46,7 +46,7 @@ __mpn_extract_long_double (mp_ptr res_ptr, mp_size_t size,
 #elif BITS_PER_MP_LIMB == 64
   /* Hopefully the compiler will combine the two bitfield extracts
      and this composition into just the original quadword extract.  */
-  res_ptr[0] = ((unsigned long int) u.ieee.mantissa0 << 32) | u.ieee.mantissa1;
+  res_ptr[0] = ((mp_limb_t) u.ieee.mantissa0 << 32) | u.ieee.mantissa1;
   #define N 1
 #else
   #error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
@@ -109,6 +109,13 @@ __mpn_extract_long_double (mp_ptr res_ptr, mp_size_t size,
            }
        }
     }
+  else if (u.ieee.exponent < 0x7fff
+#if N == 2
+          && res_ptr[0] == 0
+#endif
+          && res_ptr[N - 1] == 0)
+    /* Pseudo zero.  */
+    *expt = 0;
 
   return N;
 }


Other related posts:

  • » [haiku-commits] BRANCH xyzzy-github.x86_64 - src/system/libroot/posix/glibc/arch/x86 - xyzzy-github . x86_64