diff --git a/tools/widl/typelib.c b/tools/widl/typelib.c index 63d86c9aceb..384fc4bf262 100644 --- a/tools/widl/typelib.c +++ b/tools/widl/typelib.c @@ -144,17 +144,21 @@ unsigned short get_type_vt(type_t *t) if(match(t->name, "IDispatch")) return VT_DISPATCH; return VT_USERDEFINED; - + case RPC_FC_ENUM16: case RPC_FC_STRUCT: case RPC_FC_PSTRUCT: + case RPC_FC_CSTRUCT: + case RPC_FC_CPSTRUCT: + case RPC_FC_CVSTRUCT: + case RPC_FC_BOGUS_STRUCT: return VT_USERDEFINED; case 0: if(t->attrs) return VT_USERDEFINED; return 0; default: - error("get_type_vt: unknown-type: %d\n", t->type); + error("get_type_vt: unknown type: 0x%02x\n", t->type); } return 0; } diff --git a/tools/widl/write_msft.c b/tools/widl/write_msft.c index 70e4b904d40..faea83d1f02 100644 --- a/tools/widl/write_msft.c +++ b/tools/widl/write_msft.c @@ -879,6 +879,11 @@ static int encode_type( chat("encode_type: trying to ref not added type\n"); switch(type->type) { case RPC_FC_STRUCT: + case RPC_FC_PSTRUCT: + case RPC_FC_CSTRUCT: + case RPC_FC_CPSTRUCT: + case RPC_FC_CVSTRUCT: + case RPC_FC_BOGUS_STRUCT: add_structure_typeinfo(typelib, type); break; case RPC_FC_IP: