From 7d1e3691abdec3a31a9b0cdd83f3f13a61ff063f Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Thu, 10 Sep 2015 15:16:25 +0800 Subject: [PATCH] widl: Add special handling for pointers to arrays in the typelib generator. --- tools/widl/write_msft.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tools/widl/write_msft.c b/tools/widl/write_msft.c index 88f15463ba6..26600e43471 100644 --- a/tools/widl/write_msft.c +++ b/tools/widl/write_msft.c @@ -1128,9 +1128,12 @@ static int encode_var( if (typeoffset == typelib->typelib_segdir[MSFT_SEG_TYPEDESC].length) { int mix_field; - + if (target_type & 0x80000000) { mix_field = ((target_type >> 16) & 0x3fff) | VT_BYREF; + } else if (is_array(ref)) { + type_t *element_type = type_alias_get_aliasee(type_array_get_element(ref)); + mix_field = get_type_vt(element_type) | VT_ARRAY | VT_BYREF; } else { typedata = (void *)&typelib->typelib_segment_data[MSFT_SEG_TYPEDESC][target_type]; mix_field = ((typedata[0] >> 16) == 0x7fff)? 0x7fff: 0x7ffe;