fix fesetround error checking
[oweals/musl.git] / src / fenv / fesetround.c
index 9bbd4ade8d1fa069761eda90a5ceb6ec9c3c958e..4e2f164dd5e12d1d866d88e9203c1c1d76f969f6 100644 (file)
@@ -1,23 +1,23 @@
 #include <fenv.h>
+#include <features.h>
 
 /* __fesetround wrapper for arch independent argument check */
 
-int __fesetround(int);
+hidden int __fesetround(int);
 
 int fesetround(int r)
 {
-       if (r & ~(
-               FE_TONEAREST
+       if (r != FE_TONEAREST
 #ifdef FE_DOWNWARD
-               |FE_DOWNWARD
+               && r != FE_DOWNWARD
 #endif
 #ifdef FE_UPWARD
-               |FE_UPWARD
+               && r != FE_UPWARD
 #endif
 #ifdef FE_TOWARDZERO
-               |FE_TOWARDZERO
+               && r != FE_TOWARDZERO
 #endif
-               ))
+       )
                return -1;
        return __fesetround(r);
 }