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.
This commit is contained in:
Robert Shearman 2006-01-31 18:05:33 +01:00 committed by Alexandre Julliard
parent 2330d73f4a
commit 35d1347cfa
2 changed files with 10 additions and 2 deletions

View File

@ -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"); */

View File

@ -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");