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

Reply via email to