win87em.dll16: remove a unnecessary floating point instruction that can cause invalid operation exceptions.

Rein Klazes wijn at online.nl
Fri May 22 02:02:00 CDT 2009


The "fist" instruction is limited to 16 bit signed ints. But even using
"fistl" for 32 bits is not safe. This was all tested.

Should help bug#13107
---
 dlls/win87em.dll16/win87em.c |    3 ---
 1 files changed, 0 insertions(+), 3 deletions(-)

diff --git a/dlls/win87em.dll16/win87em.c b/dlls/win87em.dll16/win87em.c
index d3fc96a..6154ac6 100644
--- a/dlls/win87em.dll16/win87em.c
+++ b/dlls/win87em.dll16/win87em.c
@@ -149,7 +149,6 @@ void WINAPI _fpMath( CONTEXT *context )
     case 6: /* round top of stack to integer using method AX & 0x0C00 */
         /* returns current controlword */
         {
-            DWORD dw=0;
             WORD save,mask;
             /* I don't know much about asm() programming. This could be
              * wrong.
@@ -160,10 +159,8 @@ void WINAPI _fpMath( CONTEXT *context )
            __asm__ __volatile__("orw $0xC00,%0" : "=m" (mask) : : "memory");
            __asm__ __volatile__("fldcw %0;wait" : : "m" (mask));
            __asm__ __volatile__("frndint");
-           __asm__ __volatile__("fist %0;wait" : "=m" (dw) : : "memory");
            __asm__ __volatile__("fldcw %0" : : "m" (save));
 #endif
-            TRACE("On top of stack is %d\n",dw);
         }
         break;
 
-- 
1.6.2.4




More information about the wine-patches mailing list