From 35d1347cfacdc64499ee59877bf25ec4507dd4f5 Mon Sep 17 00:00:00 2001 From: Robert Shearman Date: Tue, 31 Jan 2006 18:05:33 +0100 Subject: [PATCH] widl: Fix the type offset used in marshaling/unmarshaling. Make a copy of type_offset so that it only gets incremented once per function, instead of twice. --- tools/widl/client.c | 6 +++++- tools/widl/server.c | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/tools/widl/client.c b/tools/widl/client.c index bc997f08bcb..1c3d187ff2d 100644 --- a/tools/widl/client.c +++ b/tools/widl/client.c @@ -103,6 +103,7 @@ static void write_function_stubs(type_t *iface) { var_t *def = func->def; var_t* explicit_handle_var; + unsigned int type_offset_func; /* check for a defined binding handle */ explicit_handle_var = get_explicit_handle_var(func); @@ -194,8 +195,11 @@ static void write_function_stubs(type_t *iface) fprintf(client, "\n"); + /* make a copy so we don't increment the type offset twice */ + type_offset_func = type_offset; + /* marshal arguments */ - marshall_arguments(client, indent, func, &type_offset, PASS_IN); + marshall_arguments(client, indent, func, &type_offset_func, PASS_IN); /* send/receive message */ /* print_client("NdrNsSendReceive(\n"); */ diff --git a/tools/widl/server.c b/tools/widl/server.c index 6d6d0ccc1c5..8bac8008378 100644 --- a/tools/widl/server.c +++ b/tools/widl/server.c @@ -102,6 +102,7 @@ static void write_function_stubs(type_t *iface) { var_t *def = func->def; unsigned long buffer_size = 0; + unsigned int type_offset_func; /* check for a defined binding handle */ explicit_handle_var = get_explicit_handle_var(func); @@ -200,7 +201,10 @@ static void write_function_stubs(type_t *iface) indent -= 2; fprintf(server, "\n"); - unmarshall_arguments(server, indent, func, &type_offset, PASS_IN); + /* make a copy so we don't increment the type offset twice */ + type_offset_func = type_offset; + + unmarshall_arguments(server, indent, func, &type_offset_func, PASS_IN); } print_server("if (_StubMsg.Buffer > _StubMsg.BufferEnd)\n");