diff options
author | kargl <kargl@FreeBSD.org> | 2011-06-19 17:07:58 +0000 |
---|---|---|
committer | kargl <kargl@FreeBSD.org> | 2011-06-19 17:07:58 +0000 |
commit | 6842f5f27fa5682989254819297be4d8c24cf281 (patch) | |
tree | 3c599b5fe067fb12bb75673975770d8c4b8daf94 /lib/msun/src/e_rem_pio2.c | |
parent | 7747419ea7d14237cc32a8888c87e2c8117294c8 (diff) | |
download | FreeBSD-src-6842f5f27fa5682989254819297be4d8c24cf281.zip FreeBSD-src-6842f5f27fa5682989254819297be4d8c24cf281.tar.gz |
In the libm access macros for the double type, z can sometimes
be used uninitialized. This can lead to spurious exceptions
and bit clobbering.
Submitted by: bde
Approved by: das (mentor)
Diffstat (limited to 'lib/msun/src/e_rem_pio2.c')
-rw-r--r-- | lib/msun/src/e_rem_pio2.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/lib/msun/src/e_rem_pio2.c b/lib/msun/src/e_rem_pio2.c index a58a81b..fde9660 100644 --- a/lib/msun/src/e_rem_pio2.c +++ b/lib/msun/src/e_rem_pio2.c @@ -171,9 +171,8 @@ medium: } /* set z = scalbn(|x|,ilogb(x)-23) */ GET_LOW_WORD(low,x); - SET_LOW_WORD(z,low); e0 = (ix>>20)-1046; /* e0 = ilogb(z)-23; */ - SET_HIGH_WORD(z, ix - ((int32_t)(e0<<20))); + INSERT_WORDS(z, ix - ((int32_t)(e0<<20)), low); for(i=0;i<2;i++) { tx[i] = (double)((int32_t)(z)); z = (z-tx[i])*two24; |