widl: Default to input param if [out] nor [in] attribut is specified in get_contexthandle_flags.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
stable
Jacek Caban 2019-01-24 13:38:51 +01:00 committed by Alexandre Julliard
parent 895d04623c
commit d2a8994d99
1 changed files with 5 additions and 3 deletions

View File

@ -446,6 +446,7 @@ static unsigned char get_contexthandle_flags( const type_t *iface, const attr_li
const type_t *type, int is_return ) const type_t *type, int is_return )
{ {
unsigned char flags = 0; unsigned char flags = 0;
int is_out;
if (is_attr(iface->attrs, ATTR_STRICTCONTEXTHANDLE)) flags |= NDR_STRICT_CONTEXT_HANDLE; if (is_attr(iface->attrs, ATTR_STRICTCONTEXTHANDLE)) flags |= NDR_STRICT_CONTEXT_HANDLE;
@ -456,12 +457,13 @@ static unsigned char get_contexthandle_flags( const type_t *iface, const attr_li
if (is_return) return flags | HANDLE_PARAM_IS_OUT | HANDLE_PARAM_IS_RETURN; if (is_return) return flags | HANDLE_PARAM_IS_OUT | HANDLE_PARAM_IS_RETURN;
if (is_attr(attrs, ATTR_IN)) is_out = is_attr(attrs, ATTR_OUT);
if (is_attr(attrs, ATTR_IN) || !is_out)
{ {
flags |= HANDLE_PARAM_IS_IN; flags |= HANDLE_PARAM_IS_IN;
if (!is_attr(attrs, ATTR_OUT)) flags |= NDR_CONTEXT_HANDLE_CANNOT_BE_NULL; if (!is_out) flags |= NDR_CONTEXT_HANDLE_CANNOT_BE_NULL;
} }
if (is_attr(attrs, ATTR_OUT)) flags |= HANDLE_PARAM_IS_OUT; if (is_out) flags |= HANDLE_PARAM_IS_OUT;
return flags; return flags;
} }