[PATCH 1/2] widl: Only generate Proxy Stubs when functions have the call_as attribute

Nikolay Sivov bunglehead at gmail.com
Mon Jul 10 10:16:25 CDT 2017


On 10.07.2017 12:37, Huw Davies wrote:
> On Mon, Jul 10, 2017 at 08:17:26AM +0300, Nikolay Sivov wrote:
>> On 10.07.2017 7:43, Alistair Leslie-Hughes wrote:
>>> Fixes: https://bugs.winehq.org/show_bug.cgi?id=43302
>>>
>>> Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
>>> ---
>>>  tools/widl/header.c | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/tools/widl/header.c b/tools/widl/header.c
>>> index 7b97158..e48b488 100644
>>> --- a/tools/widl/header.c
>>> +++ b/tools/widl/header.c
>>> @@ -1172,7 +1172,7 @@ static void write_method_proto(FILE *header, const type_t *iface)
>>>    {
>>>      const var_t *func = stmt->u.var;
>>>  
>>> -    if (!is_local(func->attrs)) {
>>> +    if (is_callas(func->attrs)) {
>>>        const char *callconv = get_attrp(func->type->attrs, ATTR_CALLCONV);
>>>        if (!callconv) callconv = "STDMETHODCALLTYPE";
>>>        /* proxy prototype */
>>>
>>
>> This is wrong, 'call_as' is used to map different method to be used for
>> remote calls. Midl certainly does not limit prototype generation like
>> that. You mentioned 'odl' attribute on bug report, it's irrelevant too.
> 
> Are you sure about this, the patch looks correct to me?

I tested with midl 6.00.0361 and it always emits prototypes, midl
8.01.0622 by default does not, even though both versions are generating
interpreted stubs by default. Using local/call_as methods pair forces
prototype generation with default flags too, so I guess the patch is
correct for midl versions > 6.x.

> 
> I now understand why [2/2 is needed.  The problem is the build breaks
> after [1/2], so either the order needs changing or the patches need
> combining.
> 
> Huw.
> 




More information about the wine-devel mailing list