[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