<BR><BR><BR><BR><BR>
<BLOCKQUOTE style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #ff0000 2px solid">
<P>> Message du 18/03/04 00:51<BR>> De : Marcus Meissner <MARCUS@JET.FRANKEN.DE><BR>> A : Christian Costa <TITAN.COSTA@WANADOO.FR><BR>> Copie à : wined <WINE-DEVEL@WINEHQ.ORG><BR>> Objet : Re: PLT pointer destroyed problem when loading IR32_32.DLL (Indeo codec)<BR>> On Wed, Mar 17, 2004 at 10:37:01PM +0000, Christian Costa wrote:<BR>> > Hi,<BR>> > <BR>> > When executing the DllMain of the native IR32_32.DLL (VFW), Wine crashes.<BR>> > After some investigations, I found that a part of the code uses the EBX <BR>> > register at one point without saving<BR>> > and restore it afterwards. Since this register contains the PLT pointer <BR>> > for standard unix functions like libc ones, this<BR>> > does not take a long time for Wine to crashing.<BR>> > I tested with the ugly hack attached that saves and restores the EBX <BR>> > register between the call to DllMain and that fixed the problem and<BR>> > the DLL works fine then.<BR>> <BR>> This might happen.</P>
<P>That ebx can be scrapped?</P>
<P><BR>> <BR>> Your fix is not really ok, you must not modify the stackpointer in asm statements.<BR>> <BR>> Try using:<BR>> __asm__ __volatile__ ("":::"ebx");<BR>> <BR>> after entry(), which tells the compiler that ebx has been scrapped. </P>
<P>Thanks for this! :-)<BR></P>
<P>Christian</P>
<P> </P></BLOCKQUOTE>