Module: wine Branch: master Commit: c526c980d7ac68e0918c278bfccc50e118fe3ea9 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=c526c980d7ac68e0918c278b...
Author: Dan Hipschman dsh@linux.ucla.edu Date: Tue Aug 15 18:33:58 2006 -0700
widl: Fix out-only temporary variable generation.
---
tools/widl/proxy.c | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/tools/widl/proxy.c b/tools/widl/proxy.c index 4a4e080..f060a23 100644 --- a/tools/widl/proxy.c +++ b/tools/widl/proxy.c @@ -685,8 +685,10 @@ static void gen_proxy(type_t *iface, fun static void stub_write_locals( var_t *arg ) { int n = 0; + END_OF_LIST(arg); while (arg) { - int outptr = is_attr(arg->attrs, ATTR_OUT); + int outptr = is_attr(arg->attrs, ATTR_OUT) + && ! is_attr(arg->attrs, ATTR_IN);
/* create a temporary variable to store the output */ if (outptr) { @@ -702,7 +704,7 @@ static void stub_write_locals( var_t *ar fprintf(proxy, " "); write_name(proxy, arg); fprintf(proxy, ";\n"); - arg = NEXT_LINK(arg); + arg = PREV_LINK(arg); } }
@@ -731,7 +733,8 @@ static void stub_unmarshall( var_t *arg print_proxy(""); write_name(proxy, arg); fprintf(proxy," = &_M%d;\n", n); - print_proxy("_M%d = 0;\n", n++); + print_proxy("MIDL_memset(&_M%d, 0, sizeof _M%d);\n", n, n); + ++n; break; } }