News:

Download Pelles C here: http://www.smorgasbordet.com/pellesc/

Main Menu

Bad code

Started by TimoVJL, April 24, 2025, 02:55:21 PM

Previous topic - Next topic

TimoVJL

This project works with v12 and earlier and also with msvc, but not with v13

Hopefully someone have better skills to hunt down problem in modified Pelle's Worker.c code as WTypeLibWorker.c, that i might ruined, as it won't work in V13.
Also C2RTF1.c was based Pelles's code for Add-In.

In Windows\system32 is small stdole32.tlb for testing
May the source be with you

Pelle

I don't get a crash, but apparently need to load "stdole32.tlb" twice to get a result (Windows 10).
This happens both with your code, and the "Load Type Library..." add-in that comes with the Setup.

As far as I can remember: all files with .tlb extension that I have looked at, have been in typelib file format MSFT or SLTG (obsolete for many (20+?) years...).

On my machine "stdole32.tlb" is now in DLL format, with a typelib resource in the "obsolete" SLTG format. WTF?!
/Pelle

TimoVJL

#2
This eliminate bogus pointer, but not needed
        case VT_CARRAY:
        {
            GetTypeName(pszBuf, cchMaxBuf, tdesc.lpadesc->tdescElem, NULL, pITypeInfo);
            StrCat(pszBuf, cchMaxBuf, L" %ls", bstrName); bstrName = NULL;
            for (int i = 0; i < tdesc.lpadesc->cDims; i++)
                if (tdesc.lpadesc->rgbounds)
                    StrCat(pszBuf, cchMaxBuf, L"[%u]", tdesc.lpadesc->rgbounds[i].cElements);
            break;
        }

With vbscript.dll works normally, as it don't have VT_CARRAY
cdosys.dll ok

WTypeLibList4_64_v13ms.zip have modes, msvcrt, msvcrt debug

May the source be with you

Pelle

The declaration of ARRAYDESC is wrong.

For example this, from "oaidl.idl" ...
typedef struct tagARRAYDESC {
    TYPEDESC tdescElem;
    USHORT cDims;
    [size_is(cDims)] SAFEARRAYBOUND rgbounds[];
} ARRAYDESC;

... should produce this in "oaidl.h" ...
typedef struct tagARRAYDESC {
    TYPEDESC tdescElem;
    USHORT cDims;
    SAFEARRAYBOUND rgbounds[ 1 ];
} ARRAYDESC;

...NOT this ...
typedef struct tagARRAYDESC {
    TYPEDESC tdescElem;
    USHORT cDims;
    SAFEARRAYBOUND *rgbounds;
} ARRAYDESC;

( I didn't consider the size_is() attribute ).
/Pelle

TimoVJL

#4
An old list of Windows TLBs
May the source be with you