widl: res50 is number of impinfos. Fix its usage.
diff --git a/tools/widl/typelib_struct.h b/tools/widl/typelib_struct.h
index 83a326b..961105c 100644
--- a/tools/widl/typelib_struct.h
+++ b/tools/widl/typelib_struct.h
@@ -76,7 +76,7 @@
         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 d051aa5..a3a7cb7 100644
--- a/tools/widl/write_msft.c
+++ b/tools/widl/write_msft.c
@@ -156,7 +156,7 @@
     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 @@
 	}
     }
 
+    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 @@
     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)