Module: wine Branch: master Commit: 02976b655a5d9ad8ee25dbfb2051acb5b7431381 URL: https://source.winehq.org/git/wine.git/?a=commit;h=02976b655a5d9ad8ee25dbfb2... Author: Zebediah Figura <z.figura12(a)gmail.com> Date: Wed May 29 00:24:05 2019 -0500 widl: Use IsSimpleRef only for explicitly declared arrays. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=47285 Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- tools/widl/typegen.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/tools/widl/typegen.c b/tools/widl/typegen.c index e5fb20c..9137712 100644 --- a/tools/widl/typegen.c +++ b/tools/widl/typegen.c @@ -1064,9 +1064,16 @@ static unsigned char get_parameter_fc( const var_t *var, int is_return, unsigned case TGT_UNION: case TGT_USER_TYPE: case TGT_RANGE: + *flags |= MustFree; + if (!is_in && is_out) server_size = type_memsize( ref ); + break; case TGT_ARRAY: - *flags |= IsSimpleRef | MustFree; - *typestring_offset = ref->typestring_offset; + *flags |= MustFree; + if (!type_array_is_decl_as_ptr(ref)) + { + *flags |= IsSimpleRef; + *typestring_offset = ref->typestring_offset; + } if (!is_in && is_out) server_size = type_memsize( ref ); break; case TGT_STRING: