Add some padding in WINPROC_wrapper

Uwe Bonnes bon at elektron.ikp.physik.tu-darmstadt.de
Tue Aug 31 04:17:54 CDT 2004


Changelog
	windows/winproc.c: WINPROC_wrapper
	Add some padding between saved registers and the winproc
	arguments. Some winprocs may trash the register area.

As Mike Hearn suggested, adding some padding helped with my problem with
WebPACK_42wp30_full_installer.exe. I hope, I found the right way to add that
padding.

Bye
-- 
Uwe Bonnes                bon at elektron.ikp.physik.tu-darmstadt.de

Institut fuer Kernphysik  Schlossgartenstrasse 9  64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------
Index: wine/windows/winproc.c
===================================================================
RCS file: /home/wine/wine/windows/winproc.c,v
retrieving revision 1.118
diff -u -r1.118 winproc.c
--- wine/windows/winproc.c	31 Aug 2004 00:02:02 -0000	1.118
+++ wine/windows/winproc.c	31 Aug 2004 09:11:36 -0000
@@ -187,13 +187,17 @@
                    "pushl %edi\n\t"
                    "pushl %esi\n\t"
                    "pushl %ebx\n\t"
+                   "pushl %ebx\n\t" /*some additional padding, otherwise some 
+				      winproc (e.g Xilinx WebPACK_42wp30_full_installer.exe)
+				      trashes registers */
                    "pushl 24(%ebp)\n\t"
                    "pushl 20(%ebp)\n\t"
                    "pushl 16(%ebp)\n\t"
                    "pushl 12(%ebp)\n\t"
                    "movl 8(%ebp),%eax\n\t"
                    "call *%eax\n\t"
-                   "leal -12(%ebp),%esp\n\t"
+                   "leal -16(%ebp),%esp\n\t"
+                   "popl %ebx\n\t"
                    "popl %ebx\n\t"
                    "popl %esi\n\t"
                    "popl %edi\n\t"



More information about the wine-patches mailing list