protect against long double type mismatches (mainly powerpc for now)

check in configure to be polite (failing early if we're going to fail)
and in vfprintf.c since that is the point at which a mismatching type
would be extremely dangerous.
This commit is contained in:
Rich Felker 2013-08-02 19:34:22 -04:00
commit 86cc54b577
2 changed files with 28 additions and 0 deletions

View file

@ -198,6 +198,13 @@ static char *fmt_u(uintmax_t x, char *s)
return s;
}
/* Do not override this check. The floating point printing code below
* depends on the float.h constants being right. If they are wrong, it
* may overflow the stack. */
#if LDBL_MANT_DIG == 53
typedef char compiler_defines_long_double_incorrectly[9-(int)sizeof(long double)];
#endif
static int fmt_fp(FILE *f, long double y, int w, int p, int fl, int t)
{
uint32_t big[(LDBL_MAX_EXP+LDBL_MANT_DIG)/9+1];