widl: fix handling of [local] functions without [call_as]

Rob Shearman robertshearman at gmail.com
Sat Jan 3 18:30:38 CST 2009


2009/1/3 Michael Karcher <wine at mkarcher.dialup.fu-berlin.de>:
> @@ -548,8 +548,9 @@ static int write_proxy_methods(type_t *iface, int skip)
>    if (iface->funcs) LIST_FOR_EACH_ENTRY( cur, iface->funcs, const func_t, entry ) {
>      var_t *def = cur->def;
>      if (!is_callas(def->attrs)) {
> +      if (i != cur->idx ) error("widl internal error: method index mismatch");
>        if (i) fprintf(proxy, ",\n");
> -      if (skip) print_proxy( "0  /* %s_%s_Proxy */", iface->name, get_name(def));
> +      if (skip || is_local(def->attrs)) print_proxy( "0  /* %s_%s_Proxy */", iface->name, get_name(def));
>        else print_proxy( "%s_%s_Proxy", iface->name, get_name(def));
>        i++;
>      }

This will now cause methods with the [local] attribute and with a
matching [call_as] method to no longer be included in the function
table, which isn't what you want.

-- 
Rob Shearman



More information about the wine-devel mailing list