re: Anyone actively working on ITypeInfo_fnInvoke and VariantChangeType?
Rob wrote: Does this patch fix both issues for you? Oh, man, that patch is great. It lets me start the VB6 IDE (i.e. it fixes http://bugs.winehq.org/show_bug.cgi?id=4448 ) Please submit it. Yum! - Dan -- Wine for Windows ISVs: http://kegel.com/wine/isv
Re: Anyone actively working on ITypeInfo_fnInvoke and VariantChangeType?
On May 2, 2006 11:44 am, Robert Shearman wrote: > Bill Medland wrote: > >before I start trying to get up to speed on it. > > > > > >Anyway; if someone is already working on that sort of thing > > then there is probably little point in me trying to learn it > > all. However if no-one is then I guess I will start trying > > to learn it. > > > >Comments? > > I had hoped others would continue development on typelib > stuff, picking up from where I left off after the rewrite to > use more of VariantChangeType, but unfortunately this isn't > the case and I don't have enough time to work on this area too > much. Fortunately, I don't think there are too many issues > left to fix and already the new code in ITypeInfo::Invoke gets > some programs working that wouldn't work with the old code. > > Does this patch fix both issues for you? Yes, thanks Rob. Are you going to submit it? (Now onto why it jumbs into the debugger in libkrb of all places!) -- Bill Medland mailto:[EMAIL PROTECTED] http://webhome.idirect.com/~kbmed
Re: Anyone actively working on ITypeInfo_fnInvoke and VariantChangeType?
Bill Medland wrote: before I start trying to get up to speed on it. Congratulations. My company's program now gets somewhere with the builtin ole dlls (thanks to fixes in the out-of-process COM) so I am interested in trying to get it to work completely with them (especially since the native ones no longer work) What I have just fallen over is some VB that calls a method that results in ITypeInfo_fnInvoke failed to convert param 0 to VT_VARIANT| VT_BYREF from VT_I2. So I changed the VB and ended up with ITypeInfo_fnInvoke failed to convert param 0 to VT_VARIANT| VT_BYREF from VT_VARIANT|VT_BYREF. Now it seems to me that it ought at least to handle the second case, but that probably demonstrates that I don't know what I am talking about. Anyway; if someone is already working on that sort of thing then there is probably little point in me trying to learn it all. However if no-one is then I guess I will start trying to learn it. Comments? I had hoped others would continue development on typelib stuff, picking up from where I left off after the rewrite to use more of VariantChangeType, but unfortunately this isn't the case and I don't have enough time to work on this area too much. Fortunately, I don't think there are too many issues left to fix and already the new code in ITypeInfo::Invoke gets some programs working that wouldn't work with the old code. Does this patch fix both issues for you? -- Rob Shearman diff --git a/dlls/oleaut32/typelib.c b/dlls/oleaut32/typelib.c index 43dfb73..4b88a18 100644 --- a/dlls/oleaut32/typelib.c +++ b/dlls/oleaut32/typelib.c @@ -5238,8 +5238,15 @@ static HRESULT WINAPI ITypeInfo_fnInvoke VARIANTARG *src_arg = &pDispParams->rgvarg[pDispParams->cArgs - 1 - i]; dump_Variant(src_arg); -if (rgvt[i] == VT_VARIANT) +if ((rgvt[i] == VT_VARIANT) || (rgvt[i] == V_VT(src_arg))) VariantCopy(&rgvarg[i], src_arg); +else if (rgvt[i] == (VT_VARIANT | VT_BYREF)) +{ +VARIANTARG *missing_arg = INVBUF_GET_MISSING_ARG_ARRAY(buffer, func_desc->cParams); +VariantCopy(&missing_arg[i], src_arg); +V_VARIANTREF(&rgvarg[i]) = &missing_arg[i]; +V_VT(&rgvarg[i]) = rgvt[i]; +} else if ((rgvt[i] & VT_BYREF) && !V_ISBYREF(src_arg)) { VARIANTARG *missing_arg = INVBUF_GET_MISSING_ARG_ARRAY(buffer, func_desc->cParams);
Re: Anyone actively working on ITypeInfo_fnInvoke and VariantChangeType?
Bill Medland wrote: before I start trying to get up to speed on it. Congratulations. My company's program now gets somewhere with the builtin ole dlls (thanks to fixes in the out-of-process COM) so I am interested in trying to get it to work completely with them (especially since the native ones no longer work) What I have just fallen over is some VB that calls a method that results in ITypeInfo_fnInvoke failed to convert param 0 to VT_VARIANT| VT_BYREF from VT_I2. So I changed the VB and ended up with ITypeInfo_fnInvoke failed to convert param 0 to VT_VARIANT| VT_BYREF from VT_VARIANT|VT_BYREF. Now it seems to me that it ought at least to handle the second case, but that probably demonstrates that I don't know what I am talking about. Anyway; if someone is already working on that sort of thing then there is probably little point in me trying to learn it all. However if no-one is then I guess I will start trying to learn it. Comments? You might be interested in this bug report: http://bugs.winehq.org/show_bug.cgi?id=4370 Alex Villacís Lasso
Re: Anyone actively working on ITypeInfo_fnInvoke and VariantChangeType?
Bill Medland wrote: before I start trying to get up to speed on it. Congratulations. My company's program now gets somewhere with the builtin ole dlls (thanks to fixes in the out-of-process COM) so I am interested in trying to get it to work completely with them (especially since the native ones no longer work) What I have just fallen over is some VB that calls a method that results in ITypeInfo_fnInvoke failed to convert param 0 to VT_VARIANT| VT_BYREF from VT_I2. So I changed the VB and ended up with ITypeInfo_fnInvoke failed to convert param 0 to VT_VARIANT| VT_BYREF from VT_VARIANT|VT_BYREF. Now it seems to me that it ought at least to handle the second case, but that probably demonstrates that I don't know what I am talking about. Anyway; if someone is already working on that sort of thing then there is probably little point in me trying to learn it all. However if no-one is then I guess I will start trying to learn it. Comments? AFAICT I think that bug 4370 http://bugs.winehq.org/show_bug.cgi?id=4370 is relevant to this problem. If not sorry for the noise. -- Tony Lambregts