widl: Structures and arrays with pointers should be complex when generating code for 64-bit platforms.

The non-complex variants depend on the wire size of the
structure/array matching the buffer size, but this no longer applies
when pointers are 8 bytes instead of 4.
This commit is contained in:
Rob Shearman 2008-12-27 17:35:50 +00:00 committed by Alexandre Julliard
parent 07e8ab45c9
commit 2e0aefc1fd
1 changed files with 14 additions and 0 deletions

View File

@ -212,14 +212,28 @@ static int get_struct_type(const type_t *type)
break;
case RPC_FC_RP:
return RPC_FC_BOGUS_STRUCT;
case RPC_FC_UP:
case RPC_FC_FP:
case RPC_FC_OP:
if (pointer_size != 4)
return RPC_FC_BOGUS_STRUCT;
has_pointer = 1;
break;
case RPC_FC_CARRAY:
case RPC_FC_CVARRAY:
case RPC_FC_BOGUS_ARRAY:
{
unsigned int ptr_type = get_attrv(field->attrs, ATTR_POINTERTYPE);
if (!ptr_type || ptr_type == RPC_FC_RP)
return RPC_FC_BOGUS_STRUCT;
else if (pointer_size != 4)
return RPC_FC_BOGUS_STRUCT;
has_pointer = 1;
break;
}
/*
* Propagate member attributes