On Tue, Nov 13, 2018 at 11:52:48PM -0600, Zebediah Figura wrote:
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=19016 Signed-off-by: Zebediah Figura z.figura12@gmail.com
dlls/rpcrt4/ndr_typelib.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+)
diff --git a/dlls/rpcrt4/ndr_typelib.c b/dlls/rpcrt4/ndr_typelib.c index f68e61e5fa..82ee53d7e7 100644 --- a/dlls/rpcrt4/ndr_typelib.c +++ b/dlls/rpcrt4/ndr_typelib.c @@ -324,6 +324,37 @@ static size_t write_ip_tfs(unsigned char *str, size_t *len, const GUID *iid) return off; }
+static void get_default_iface(ITypeInfo *typeinfo, WORD count, GUID *iid) +{
- ITypeInfo *refinfo;
- HREFTYPE reftype;
- TYPEATTR *attr;
- int flags, i;
- for (i = 0; i < count; ++i)
- {
ITypeInfo_GetImplTypeFlags(typeinfo, i, &flags);
if (flags & IMPLTYPEFLAG_FDEFAULT)
{
ITypeInfo_GetRefTypeOfImplType(typeinfo, i, &reftype);
ITypeInfo_GetRefTypeInfo(typeinfo, reftype, &refinfo);
ITypeInfo_GetTypeAttr(refinfo, &attr);
*iid = attr->guid;
ITypeInfo_ReleaseTypeAttr(refinfo, attr);
ITypeInfo_Release(refinfo);
return;
}
- }
- /* If no interface was explicitly marked default, choose the first one. */
- ITypeInfo_GetRefTypeOfImplType(typeinfo, 0, &reftype);
- ITypeInfo_GetRefTypeInfo(typeinfo, reftype, &refinfo);
- ITypeInfo_GetTypeAttr(refinfo, &attr);
- *iid = attr->guid;
- ITypeInfo_ReleaseTypeAttr(refinfo, attr);
- ITypeInfo_Release(refinfo);
+}
The code duplication here isn't great. How about using the loop to simply find the index?
Huw.