Dmitry Timoshkov : widl: Add special handling for pointers to arrays in the typelib generator.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Sep 10 08:07:53 CDT 2015


Module: wine
Branch: master
Commit: 7d1e3691abdec3a31a9b0cdd83f3f13a61ff063f
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=7d1e3691abdec3a31a9b0cdd83f3f13a61ff063f

Author: Dmitry Timoshkov <dmitry at baikal.ru>
Date:   Thu Sep 10 15:16:25 2015 +0800

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 88f1546..26600e4 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;




More information about the wine-cvs mailing list