Dan Hipschman : widl: Fix out-only temporary variable generation.
Alexandre Julliard
julliard at wine.codeweavers.com
Wed Aug 16 06:16:03 CDT 2006
Module: wine
Branch: master
Commit: c526c980d7ac68e0918c278bfccc50e118fe3ea9
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=c526c980d7ac68e0918c278bfccc50e118fe3ea9
Author: Dan Hipschman <dsh at 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;
}
}
More information about the wine-cvs
mailing list