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