提交 f6fd351c 编写于 作者: R Rich Felker

catch invalid ld80 bit patterns and treat them as nan

this should not be necessary - the invalid bit patterns cannot be
created except through type punning. however, some broken gnu software
is passing them to printf and triggering dangerous stack-smashing, so
let's catch them anyway...
上级 e5cb55fe
......@@ -7,10 +7,10 @@ int __fpclassifyl(long double __x)
union {
long double __ld;
__uint16_t __hw[5];
__uint64_t __m;
__int64_t __m;
} __y = { __x };
int __ee = __y.__hw[4]&0x7fff;
if (!__ee) return __y.__m ? FP_SUBNORMAL : FP_ZERO;
if (__ee==0x7fff) return __y.__m ? FP_NAN : FP_INFINITE;
return FP_NORMAL;
return __y.__m < 0 ? FP_NORMAL : FP_NAN;
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册