widl: Fix a write_parameters_init bug.
This commit is contained in:
parent
e36981e116
commit
58dea5c9a8
|
@ -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");
|
print_proxy("NdrStubInitialize(_pRpcMessage, &_StubMsg, &Object_StubDesc, _pRpcChannelBuffer);\n");
|
||||||
fprintf(proxy, "\n");
|
fprintf(proxy, "\n");
|
||||||
|
|
||||||
write_parameters_init(cur);
|
write_parameters_init(proxy, indent, cur);
|
||||||
|
|
||||||
print_proxy("RpcTryFinally\n");
|
print_proxy("RpcTryFinally\n");
|
||||||
print_proxy("{\n");
|
print_proxy("{\n");
|
||||||
|
|
|
@ -54,28 +54,6 @@ static void print_server(const char *format, ...)
|
||||||
va_end(va);
|
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)
|
static void write_function_stubs(type_t *iface, unsigned int *proc_offset)
|
||||||
{
|
{
|
||||||
char *implicit_handle = get_attrp(iface->attrs, ATTR_IMPLICIT_HANDLE);
|
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--;
|
indent--;
|
||||||
fprintf(server, "\n");
|
fprintf(server, "\n");
|
||||||
|
|
||||||
write_parameters_init(func);
|
write_parameters_init(server, indent, func);
|
||||||
|
|
||||||
if (explicit_handle_var)
|
if (explicit_handle_var)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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)
|
static void write_formatdesc(FILE *f, int indent, const char *str)
|
||||||
{
|
{
|
||||||
print_file(f, indent, "typedef struct _MIDL_%s_FORMAT_STRING\n", str);
|
print_file(f, indent, "typedef struct _MIDL_%s_FORMAT_STRING\n", str);
|
||||||
|
|
|
@ -53,5 +53,5 @@ void write_user_quad_list(FILE *file);
|
||||||
void write_endpoints( FILE *f, const char *prefix, const str_list_t *list );
|
void write_endpoints( FILE *f, const char *prefix, const str_list_t *list );
|
||||||
size_t type_memsize(const type_t *t, unsigned int *align);
|
size_t type_memsize(const type_t *t, unsigned int *align);
|
||||||
int decl_indirect(const type_t *t);
|
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);
|
void print(FILE *file, int indent, const char *format, va_list ap);
|
||||||
|
|
Loading…
Reference in New Issue