Re: widl: fix handling of [local] functions without [call_as]
2009/1/3 Michael Karcher <wine(a)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
Am Sonntag, den 04.01.2009, 00:30 +0000 schrieb Rob Shearman:
2009/1/3 Michael Karcher <wine(a)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.
Yeah, right. This patch is bad. Will resend a fixed version tomorrow. Regards, Michael Karcher
participants (2)
-
Michael Karcher -
Rob Shearman