Browse Source

fix fesetround error checking

Rounding modes are not bit flags, but arbitrary non-negative integers.
master
Szabolcs Nagy 8 years ago
committed by Rich Felker
parent
commit
7b384c42b7
  1. 11
      src/fenv/fesetround.c

11
src/fenv/fesetround.c

@ -7,18 +7,17 @@ hidden int __fesetround(int);
int fesetround(int r) int fesetround(int r)
{ {
if (r & ~( if (r != FE_TONEAREST
FE_TONEAREST
#ifdef FE_DOWNWARD #ifdef FE_DOWNWARD
|FE_DOWNWARD && r != FE_DOWNWARD
#endif #endif
#ifdef FE_UPWARD #ifdef FE_UPWARD
|FE_UPWARD && r != FE_UPWARD
#endif #endif
#ifdef FE_TOWARDZERO #ifdef FE_TOWARDZERO
|FE_TOWARDZERO && r != FE_TOWARDZERO
#endif #endif
)) )
return -1; return -1;
return __fesetround(r); return __fesetround(r);
} }

Loading…
Cancel
Save