oleaut32: preliminary support for VT_DISPATCH as parameters to VarAdd (and other 2-operand operations) (RESEND)

Robert Shearman rob at codeweavers.com
Fri Nov 24 07:49:04 CST 2006


Alex Villací­s Lasso wrote:
> @@ -3114,6 +3155,13 @@
>            debugstr_VF(left), right, debugstr_VT(right), debugstr_VF(right),
>            result);
>  
> +    /* Handle VT_DISPATCH by recursively calling op on result of IDispatch_Invoke */
> +    if (((V_VT(left) & VT_TYPEMASK) == VT_DISPATCH || 
> +        (V_VT(right) & VT_TYPEMASK) == VT_DISPATCH) &&
> +        (V_VT(left) & VT_TYPEMASK) != VT_NULL && 
> +        (V_VT(right) & VT_TYPEMASK) != VT_NULL) 
> +        return VARIANT_InvokeDispatchOp(left, right, result, VarAdd);
> +
>      VariantInit(&lv);
>      VariantInit(&rv);
>      VariantInit(&tv);
>   

I think you could solve this without recursion, in the same way that 
other types are coerced.

-- 
Rob Shearman




More information about the wine-devel mailing list