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) {