From 4812abc2475f67f4cfbbdda4c6c56bfaef57adb0 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Sat, 13 May 2006 18:07:38 +0200 Subject: [PATCH] widl: res50 is number of impinfos. Fix its usage. --- tools/widl/typelib_struct.h | 2 +- tools/widl/write_msft.c | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/tools/widl/typelib_struct.h b/tools/widl/typelib_struct.h index 83a326b259a..961105caece 100644 --- a/tools/widl/typelib_struct.h +++ b/tools/widl/typelib_struct.h @@ -76,7 +76,7 @@ typedef struct tagMSFT_Header { INT res44; /* unknown always: 0x20 (guid hash size?) */ INT res48; /* unknown always: 0x80 (name hash size?) */ INT dispatchpos; /* HREFTYPE to IDispatch, or -1 if no IDispatch */ -/*0x50*/INT res50; /* is zero becomes one when an interface is derived */ +/*0x50*/INT nimpinfos; /* number of impinfos */ } MSFT_Header; /* segments in the type lib file have a structure like this: */ diff --git a/tools/widl/write_msft.c b/tools/widl/write_msft.c index d051aa5d730..a3a7cb7ef9c 100644 --- a/tools/widl/write_msft.c +++ b/tools/widl/write_msft.c @@ -156,7 +156,7 @@ static void ctl2_init_header( typelib->typelib_header.res44 = 0x20; typelib->typelib_header.res48 = 0x80; typelib->typelib_header.dispatchpos = -1; - typelib->typelib_header.res50 = 0; + typelib->typelib_header.nimpinfos = 0; } /**************************************************************************** @@ -608,6 +608,8 @@ static int alloc_importinfo( } } + impinfo->flags |= typelib->typelib_header.nimpinfos++; + offset = ctl2_alloc_segment(typelib, MSFT_SEG_IMPORTINFO, sizeof(MSFT_ImpInfo), 0); if (offset == -1) return -1; @@ -1801,9 +1803,6 @@ static void add_dispatch(msft_typelib_t *typelib) impinfo.oImpFile = impfile_offset; impinfo.oGuid = ctl2_alloc_guid(typelib, &guidentry); typelib->typelib_header.dispatchpos = alloc_importinfo(typelib, &impinfo) | 0x01; - - typelib->typelib_header.res50 = 1; - } static void add_dispinterface_typeinfo(msft_typelib_t *typelib, type_t *dispinterface)