Description : Problem while reading type description.
When reading a VT_PTR type (td[0] == 1a, for typelib hackers...) and the
being non-standard (td[3] > 0) then it would assign the pointed type
description as the type stored at index td[3]/8 in the type description
table.
The problem is that for non-standard pointed types, td[3] is always 0
(duh!). I observed that the type is stored at td[2]/8 and not td[3]/8.
This would cause TLB_GetTdesc to return the wrong type when processing
non-standard types.
The problem has been observed against Microsoft's stdole2.tlb.
Francois Jacques
Macadamian Technologies Inc.
Index: dlls/oleaut32/typelib.c
===================================================================
RCS file: /home/wine/wine/dlls/oleaut32/typelib.c,v
retrieving revision 1.17
diff -u -u -r1.17 typelib.c
--- dlls/oleaut32/typelib.c 2000/08/08 20:49:16 1.17
+++ dlls/oleaut32/typelib.c 2000/08/09 16:23:51
@@ -1257,7 +1263,7 @@
if(td[3] < 0)
V_UNION(&(pTypeLibImpl->pTypeDesc[i]),lptdesc)= &
stndTypeDesc[td[2]];
else
- V_UNION(&(pTypeLibImpl->pTypeDesc[i]),lptdesc)= &
pTypeLibImpl->pTypeDesc[td[3]/8];
+ V_UNION(&(pTypeLibImpl->pTypeDesc[i]),lptdesc)= &
+pTypeLibImpl->pTypeDesc[td[2]/8];
}
else if(td[0] == VT_CARRAY)
{