[FAST486]
authorAleksandar Andrejevic <aandrejevic@reactos.org>
Fri, 22 May 2015 03:40:44 +0000 (03:40 +0000)
committerAleksandar Andrejevic <aandrejevic@reactos.org>
Fri, 22 May 2015 03:40:44 +0000 (03:40 +0000)
Fix comparing NaNs in Fast486FpuCompare.

svn path=/trunk/; revision=67844

reactos/lib/fast486/fpu.c

index d94ede1..335e4e9 100644 (file)
@@ -767,13 +767,17 @@ Fast486FpuCompare(PFAST486_STATE State,
 {
     if (FPU_IS_NAN(FirstOperand) || FPU_IS_NAN(SecondOperand))
     {
-        if (FPU_IS_POS_INF(FirstOperand) && FPU_IS_NEG_INF(SecondOperand))
+        if ((FPU_IS_POS_INF(FirstOperand)
+            && (!FPU_IS_NAN(SecondOperand) || FPU_IS_NEG_INF(SecondOperand)))
+            || (!FPU_IS_NAN(FirstOperand) && FPU_IS_NEG_INF(SecondOperand)))
         {
             State->FpuStatus.Code0 = FALSE;
             State->FpuStatus.Code2 = FALSE;
             State->FpuStatus.Code3 = FALSE;
         }
-        else if (FPU_IS_NEG_INF(FirstOperand) && FPU_IS_POS_INF(SecondOperand))
+        else if ((FPU_IS_POS_INF(SecondOperand)
+                 && (!FPU_IS_NAN(FirstOperand) || FPU_IS_NEG_INF(FirstOperand)))
+                 || (!FPU_IS_NAN(SecondOperand) && FPU_IS_NEG_INF(FirstOperand)))
         {
             State->FpuStatus.Code0 = TRUE;
             State->FpuStatus.Code2 = FALSE;