diff --git a/reactos/tools/widl/typegen.c b/reactos/tools/widl/typegen.c index 41dd22f2cfd..952baf82796 100644 --- a/reactos/tools/widl/typegen.c +++ b/reactos/tools/widl/typegen.c @@ -3299,8 +3299,9 @@ int write_expr_eval_routines(FILE *file, const char *iface) print_file(file, 0, "static void __RPC_USER %s_%sExprEval_%04u(PMIDL_STUB_MESSAGE pStubMsg)\n", iface, name, callback_offset); print_file(file, 0, "{\n"); - print_file (file, 1, "%s *%s = (%s *)(pStubMsg->StackTop - %u);\n", - name, var_name, name, eval->baseoff); + print_file (file, 1, "%s%s *%s = (%s%s *)(pStubMsg->StackTop - %u);\n", + is_struct(eval->structure->type) ? "struct " : "", name, var_name, + is_struct(eval->structure->type) ? "struct " : "", name, eval->baseoff); print_file(file, 1, "pStubMsg->Offset = 0;\n"); /* FIXME */ print_file(file, 1, "pStubMsg->MaxCount = (unsigned long)"); write_struct_expr(file, eval->expr, 1, fields, var_name); diff --git a/reactos/tools/widl/widl_ros.diff b/reactos/tools/widl/widl_ros.diff index 84aff9839cd..3d88b9768a9 100644 --- a/reactos/tools/widl/widl_ros.diff +++ b/reactos/tools/widl/widl_ros.diff @@ -46,6 +46,22 @@ Index: server.c print_server("#include \"%s\"\n", header_name); fprintf(server, "\n"); } +Index: typegen.c +=================================================================== +--- typegen.c (revision 32187) ++++ typegen.c (working copy) +@@ -3299,8 +3299,9 @@ + print_file(file, 0, "static void __RPC_USER %s_%sExprEval_%04u(PMIDL_STUB_MESSAGE pStubMsg)\n", + iface, name, callback_offset); + print_file(file, 0, "{\n"); +- print_file (file, 1, "%s *%s = (%s *)(pStubMsg->StackTop - %u);\n", +- name, var_name, name, eval->baseoff); ++ print_file (file, 1, "%s%s *%s = (%s%s *)(pStubMsg->StackTop - %u);\n", ++ is_struct(eval->structure->type) ? "struct " : "", name, var_name, ++ is_struct(eval->structure->type) ? "struct " : "", name, eval->baseoff); + print_file(file, 1, "pStubMsg->Offset = 0;\n"); /* FIXME */ + print_file(file, 1, "pStubMsg->MaxCount = (unsigned long)"); + write_struct_expr(file, eval->expr, 1, fields, var_name); Index: typelib.c =================================================================== --- typelib.c (revision 32187)