Patch to support VT_BYREF | VT_I4 in typelib.c _copy_arg

Robert Shearman rob at codeweavers.com
Fri Dec 10 10:05:33 CST 2004


Erich Hoover wrote:

> dlls/oleaut32/typelib.c does not currently support VT_BYREF | VT_I4 in 
> _copy_arg, this causes InstallShield to crash when attempting to 
> install the demo for "Prince of Persia: Warrior Within" (and probably 
> other InstallShield programs as well).  Installation can complete with 
> this fix under Win9x w/ Desktop (2K and XP options still fail due to 
> "unimplemented function imagehlp.dll.StackWalk64" and non-Desktop 
> fails for unknown reason).


It sounds like it is crashing further down the line. Using +seh debug 
flags will confirm or deny this.

>------------------------------------------------------------------------
>
>*** typelib.c	2004-12-09 21:09:07.000000000 -0700
>--- typelib.c.new	2004-12-09 21:18:10.202385336 -0700
>***************
>*** 4543,4550 ****
>               memcpy(argpos, &V_UNION(arg,lVal), 4);
>               hres = S_OK;
>               break;
>            default:
>!              FIXME("vt 0x%x -> TKIND_ENUM unhandled.\n",V_VT(arg));
>               hres = E_FAIL;
>               break;
>  
>

>            }
>--- 4543,4554 ----
>               memcpy(argpos, &V_UNION(arg,lVal), 4);
>               hres = S_OK;
>               break;
>+           case VT_BYREF | VT_I4:
>+              *argpos = V_UNION(arg,iVal);
>+              hres = S_OK;
>+              break;
>            default:
>!              FIXME("vt 0x%x 0x%x -> TKIND_ENUM unhandled.\n", V_VT(arg), VT_BYREF | VT_I4);
>               hres = E_FAIL;
>               break;
>            }
>  
>

Please generate patches using diff -u -p and send them to wine-patches.

Rob



More information about the wine-devel mailing list