Переглянути джерело

fix fesetround error checking

Rounding modes are not bit flags, but arbitrary non-negative integers.
Szabolcs Nagy 6 роки тому
батько
коміт
7b384c42b7
1 змінених файлів з 5 додано та 6 видалено
  1. 5 6
      src/fenv/fesetround.c

+ 5 - 6
src/fenv/fesetround.c

@@ -7,18 +7,17 @@ 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);
 }