diff --git a/tools/widl/proxy.c b/tools/widl/proxy.c index 93eddf570b0..4911caf2b66 100644 --- a/tools/widl/proxy.c +++ b/tools/widl/proxy.c @@ -367,7 +367,7 @@ static void gen_stub(type_t *iface, const func_t *cur, const char *cas, print_proxy("NdrStubInitialize(_pRpcMessage, &_StubMsg, &Object_StubDesc, _pRpcChannelBuffer);\n"); fprintf(proxy, "\n"); - write_parameters_init(cur); + write_parameters_init(proxy, indent, cur); print_proxy("RpcTryFinally\n"); print_proxy("{\n"); diff --git a/tools/widl/server.c b/tools/widl/server.c index e3740ce383f..fd94c9ae323 100644 --- a/tools/widl/server.c +++ b/tools/widl/server.c @@ -54,28 +54,6 @@ static void print_server(const char *format, ...) va_end(va); } - -void write_parameters_init(const func_t *func) -{ - const var_t *var; - - if (!func->args) - return; - - LIST_FOR_EACH_ENTRY( var, func->args, const var_t, entry ) - { - const type_t *t = var->type; - const char *n = var->name; - if (decl_indirect(t)) - print_server("MIDL_memset(&%s, 0, sizeof %s);\n", n, n); - else if (is_ptr(t) || is_array(t)) - print_server("%s = 0;\n", n); - } - - fprintf(server, "\n"); -} - - static void write_function_stubs(type_t *iface, unsigned int *proc_offset) { char *implicit_handle = get_attrp(iface->attrs, ATTR_IMPLICIT_HANDLE); @@ -137,7 +115,7 @@ static void write_function_stubs(type_t *iface, unsigned int *proc_offset) indent--; fprintf(server, "\n"); - write_parameters_init(func); + write_parameters_init(server, indent, func); if (explicit_handle_var) { diff --git a/tools/widl/typegen.c b/tools/widl/typegen.c index 6da96f5651f..a1e4e6da11f 100644 --- a/tools/widl/typegen.c +++ b/tools/widl/typegen.c @@ -273,6 +273,26 @@ void print(FILE *file, int indent, const char *format, va_list va) } } +void write_parameters_init(FILE *file, int indent, const func_t *func) +{ + const var_t *var; + + if (!func->args) + return; + + LIST_FOR_EACH_ENTRY( var, func->args, const var_t, entry ) + { + const type_t *t = var->type; + const char *n = var->name; + if (decl_indirect(t)) + print_file(file, indent, "MIDL_memset(&%s, 0, sizeof %s);\n", n, n); + else if (is_ptr(t) || is_array(t)) + print_file(file, indent, "%s = 0;\n", n); + } + + fprintf(file, "\n"); +} + static void write_formatdesc(FILE *f, int indent, const char *str) { print_file(f, indent, "typedef struct _MIDL_%s_FORMAT_STRING\n", str); diff --git a/tools/widl/typegen.h b/tools/widl/typegen.h index 77b207ef656..eefecd79e8f 100644 --- a/tools/widl/typegen.h +++ b/tools/widl/typegen.h @@ -53,5 +53,5 @@ void write_user_quad_list(FILE *file); void write_endpoints( FILE *f, const char *prefix, const str_list_t *list ); size_t type_memsize(const type_t *t, unsigned int *align); int decl_indirect(const type_t *t); -void write_parameters_init(const func_t *func); +void write_parameters_init(FILE *file, int indent, const func_t *func); void print(FILE *file, int indent, const char *format, va_list ap);