[Wine-devel] [Wine-patches] [eter-2.0.0] oleaut32: installation of M.E.Doc (eterbug #7864)

Dmitry Timoshkov dtimoshkov на etersoft.ru
Пт Май 18 16:33:47 MSK 2012


Roman Dadkov <romand на etersoft.ru> wrote:

> --- a/dlls/oleaut32/variant.c
> +++ b/dlls/oleaut32/variant.c
> @@ -778,7 +778,16 @@ HRESULT WINAPI VariantCopy(VARIANTARG* pvargDest, VARIANTARG* pvargSrc)
>        }
>        else if (V_VT(pvargSrc) == VT_BSTR)
>        {
> -        V_BSTR(pvargDest) = SysAllocStringByteLen((char*)V_BSTR(pvargSrc), SysStringByteLen(V_BSTR(pvargSrc)));
> +        /* eterbug #7864 */
> +        void **ptr;
> +        void *ret_addr;
> +        __asm__( "movl %%ebp,%0" : "=r" (ptr) );
> +        ret_addr = *(++ptr);
> +        if(ret_addr != 0xa424fef) /* Sided function at this location conveys incorrect values. Therefore applies another function to allocate memory */
> +          V_BSTR(pvargDest) = SysAllocStringByteLen((char*)V_BSTR(pvargSrc), SysStringByteLen(V_BSTR(pvargSrc)));
> +        else
> +          V_BSTR(pvargDest) = SysAllocString(V_BSTR(pvargSrc));

Ух, это просто песня, а не хак. Пожалуйста откатите его.

Работает ли программа с 'oleaut32=n'? Если да, начните с выяснения разницы
поведения с 'b' и 'n'.

-- 
Dmitry.


Подробная информация о списке рассылки Wine-devel