widl [4/4]: Detect conformant arrays of user types correctly.

Robert Shearman rob at codeweavers.com
Thu Oct 18 10:02:40 CDT 2007


Dan Hipschman wrote:
> @@ -1859,6 +1859,7 @@ static int get_struct_type(var_list_t *fields)
>      case RPC_FC_OP:
>      case RPC_FC_CARRAY:
>      case RPC_FC_CVARRAY:
> +    case RPC_FC_BOGUS_ARRAY:
>        has_pointer = 1;
>        break;
>  
> @@ -1897,15 +1898,9 @@ static int get_struct_type(var_list_t *fields)
>        /* fallthru - treat it as complex */
>  
>      /* as soon as we see one of these these members, it's bogus... */
> -    case RPC_FC_IP:
>      case RPC_FC_ENCAPSULATED_UNION:
>      case RPC_FC_NON_ENCAPSULATED_UNION:
> -    case RPC_FC_TRANSMIT_AS:
> -    case RPC_FC_REPRESENT_AS:
> -    case RPC_FC_PAD:
> -    case RPC_FC_EMBEDDED_COMPLEX:
>      case RPC_FC_BOGUS_STRUCT:
> -    case RPC_FC_BOGUS_ARRAY:
>        return RPC_FC_BOGUS_STRUCT;
>      }
>    }
>   

Hi Dan,

What's the reasoning behind this part of the patch? It seems to me like 
most of the cases that you removed from becoming a complex structure are 
actually valid. The hunk further up also confuses me - the presence of a 
complex array shouldn't just make the resulting structure into a pointer 
structure, it should make it into a complex structure, since it can't be 
marshalled solely by using memcpy.

-- 
Rob Shearman




More information about the wine-devel mailing list