Module: wine Branch: refs/heads/master Commit: f4356a64e3daefe125efe8714903ae84d68dfbfc URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=f4356a64e3daefe125efe871...
Author: Robert Shearman rob@codeweavers.com Date: Mon Dec 12 12:11:11 2005 +0100
widl: Don't treat FC_SMALL as FC_SHORT. FC_SMALL is its own type and is the same size as FC_CHAR, not FC_SHORT.
---
tools/widl/header.c | 5 +++++ tools/widl/parser.y | 2 +- tools/widl/typegen.c | 7 +++++++ 3 files changed, 13 insertions(+), 1 deletions(-)
diff --git a/tools/widl/header.c b/tools/widl/header.c index be279ad..070657a 100644 --- a/tools/widl/header.c +++ b/tools/widl/header.c @@ -221,6 +221,11 @@ void write_type(FILE *h, type_t *t, var_ case RPC_FC_WCHAR: fprintf(h, "WCHAR"); break; + case RPC_FC_USMALL: + case RPC_FC_SMALL: + if (t->ref) fprintf(h, t->ref->name); + else fprintf(h, "small"); + break; case RPC_FC_USHORT: case RPC_FC_SHORT: if (t->ref) fprintf(h, t->ref->name); diff --git a/tools/widl/parser.y b/tools/widl/parser.y index 86eac75..ef331a2 100644 --- a/tools/widl/parser.y +++ b/tools/widl/parser.y @@ -585,7 +585,7 @@ m_int:
int_std: tINT { $$ = make_type(RPC_FC_LONG, &std_int); } /* win32 only */ | tSHORT m_int { $$ = make_type(RPC_FC_SHORT, NULL); } - | tSMALL { $$ = make_type(RPC_FC_SHORT, NULL); } + | tSMALL { $$ = make_type(RPC_FC_SMALL, NULL); } | tLONG m_int { $$ = make_type(RPC_FC_LONG, NULL); } | tHYPER m_int { $$ = make_type(RPC_FC_HYPER, NULL); } | tINT64 { $$ = make_type(RPC_FC_HYPER, &std_int64); } diff --git a/tools/widl/typegen.c b/tools/widl/typegen.c index 1ae84f1..14817da 100644 --- a/tools/widl/typegen.c +++ b/tools/widl/typegen.c @@ -71,6 +71,7 @@ static void write_procformatstring_var(F CASE_BASETYPE(FC_LONG); CASE_BASETYPE(FC_HYPER); CASE_BASETYPE(FC_IGNORE); + CASE_BASETYPE(FC_USMALL); CASE_BASETYPE(FC_SMALL); CASE_BASETYPE(FC_FLOAT); CASE_BASETYPE(FC_DOUBLE); @@ -162,6 +163,8 @@ unsigned int get_required_buffer_size(ty case RPC_FC_WCHAR: case RPC_FC_USHORT: case RPC_FC_SHORT: + case RPC_FC_USMALL: + case RPC_FC_SMALL: case RPC_FC_ULONG: case RPC_FC_LONG: case RPC_FC_FLOAT: @@ -198,6 +201,8 @@ void marshall_arguments(FILE *file, int { case RPC_FC_BYTE: case RPC_FC_CHAR: + case RPC_FC_SMALL: + case RPC_FC_USMALL: size = 1; alignment = 0; break; @@ -266,6 +271,8 @@ void unmarshall_arguments(FILE *file, in { case RPC_FC_BYTE: case RPC_FC_CHAR: + case RPC_FC_SMALL: + case RPC_FC_USMALL: size = 1; alignment = 0; break;