VirtualBox

Changeset 41297 in vbox


Ignore:
Timestamp:
May 15, 2012 9:28:05 AM (12 years ago)
Author:
vboxsync
Message:

VBoxCPP: Uninitialized variable in VBCPPMACRO.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bldprogs/VBoxCPP.cpp

    r41266 r41297  
    105105
    106106/**
    107  * A define.
    108  */
    109 typedef struct VBCPPDEF
     107 * A macro (aka define).
     108 */
     109typedef struct VBCPPMACRO
    110110{
    111111    /** The string space core. */
    112112    RTSTRSPACECORE      Core;
    113113    /** For linking macros that have the fExpanding flag set. */
    114     struct VBCPPDEF    *pUpExpanding;
     114    struct VBCPPMACRO  *pUpExpanding;
    115115    /** Whether it's a function. */
    116116    bool                fFunction;
     
    132132    /** The define value.  (This is followed by the name and arguments.) */
    133133    char                szValue[1];
    134 } VBCPPDEF;
    135 /** Pointer to a define. */
    136 typedef VBCPPDEF *PVBCPPDEF;
     134} VBCPPMACRO;
     135/** Pointer to a macro. */
     136typedef VBCPPMACRO *PVBCPPMACRO;
    137137
    138138
     
    145145    VBCPPSTRBUF     StrBuf;
    146146    /** List of expanding macros (Stack). */
    147     PVBCPPDEF       pMacroStack;
     147    PVBCPPMACRO     pMacroStack;
    148148    /** The input stream (in case we want to look for parameter lists). */
    149149    PSCMSTREAM      pStrmInput;
     
    518518*   Internal Functions                                                         *
    519519*******************************************************************************/
    520 static PVBCPPDEF    vbcppMacroLookup(PVBCPP pThis, const char *pszDefine, size_t cchDefine);
    521 static RTEXITCODE   vbcppMacroExpandIt(PVBCPP pThis, PVBCPPMACROEXP pExp, size_t offMacro, PVBCPPDEF pMacro, size_t *poffParameters);
     520static PVBCPPMACRO  vbcppMacroLookup(PVBCPP pThis, const char *pszDefine, size_t cchDefine);
     521static RTEXITCODE   vbcppMacroExpandIt(PVBCPP pThis, PVBCPPMACROEXP pExp, size_t offMacro, PVBCPPMACRO pMacro, size_t *poffParameters);
    522522static RTEXITCODE   vbcppMacroExpandReScan(PVBCPP pThis, PVBCPPMACROEXP pExp, VBCPPMACRORESCANMODE enmMode, size_t *pcReplacements);
    523523static void         vbcppMacroExpandCleanup(PVBCPPMACROEXP pExp);
     
    15551555     * Does this look like a define we know?
    15561556     */
    1557     PVBCPPDEF pMacro = vbcppMacroLookup(pThis, pchDefine, cchDefine);
     1557    PVBCPPMACRO pMacro = vbcppMacroLookup(pThis, pchDefine, cchDefine);
    15581558    if (   pMacro
    15591559        && (   !pMacro->fFunction
     
    16561656 * @param   cchDefine           The length of the name. RTSTR_MAX is ok.
    16571657 */
    1658 static PVBCPPDEF vbcppMacroLookup(PVBCPP pThis, const char *pszDefine, size_t cchDefine)
     1658static PVBCPPMACRO vbcppMacroLookup(PVBCPP pThis, const char *pszDefine, size_t cchDefine)
    16591659{
    16601660    if (!cchDefine)
     
    16621662    if (!VBCPP_BITMAP_IS_SET(pThis->bmDefined, *pszDefine))
    16631663        return NULL;
    1664     return (PVBCPPDEF)RTStrSpaceGetN(&pThis->StrSpace, pszDefine, cchDefine);
    1665 }
    1666 
    1667 
    1668 static uint32_t vbcppMacroLookupArg(PVBCPPDEF pMacro, const char *pchName, size_t cchName)
     1664    return (PVBCPPMACRO)RTStrSpaceGetN(&pThis->StrSpace, pszDefine, cchDefine);
     1665}
     1666
     1667
     1668static uint32_t vbcppMacroLookupArg(PVBCPPMACRO pMacro, const char *pchName, size_t cchName)
    16691669{
    16701670    Assert(cchName > 0);
     
    20352035 *                              should initialize and destroy this!
    20362036 */
    2037 static RTEXITCODE vbcppMacroExpandValueWithArguments(PVBCPP pThis, PVBCPPMACROEXP pExp, PVBCPPDEF pMacro,
     2037static RTEXITCODE vbcppMacroExpandValueWithArguments(PVBCPP pThis, PVBCPPMACROEXP pExp, PVBCPPMACRO pMacro,
    20382038                                                     PVBCPPSTRBUF pStrBuf)
    20392039{
     
    21992199 *                              failure.
    22002200 */
    2201 static RTEXITCODE vbcppMacroExpandIt(PVBCPP pThis, PVBCPPMACROEXP pExp, size_t offMacro, PVBCPPDEF pMacro,
     2201static RTEXITCODE vbcppMacroExpandIt(PVBCPP pThis, PVBCPPMACROEXP pExp, size_t offMacro, PVBCPPMACRO pMacro,
    22022202                                     size_t *poffParameters)
    22032203{
     
    24342434            size_t cchDefine = off - offDefine;
    24352435
    2436             PVBCPPDEF pMacro = vbcppMacroLookup(pThis, &pExp->StrBuf.pszBuf[offDefine], cchDefine);
     2436            PVBCPPMACRO pMacro = vbcppMacroLookup(pThis, &pExp->StrBuf.pszBuf[offDefine], cchDefine);
    24372437            if (   pMacro
    24382438                && (   !pMacro->fFunction
     
    24732473    while (pExp->pMacroStack)
    24742474    {
    2475         PVBCPPDEF pMacro = pExp->pMacroStack;
     2475        PVBCPPMACRO pMacro = pExp->pMacroStack;
    24762476        pExp->pMacroStack = pMacro->pUpExpanding;
    24772477
     
    24982498 *
    24992499 * @returns VINF_SUCCESS (used when called by RTStrSpaceDestroy)
    2500  * @param   pStr                Pointer to the VBCPPDEF::Core member.
     2500 * @param   pStr                Pointer to the VBCPPMACRO::Core member.
    25012501 * @param   pvUser              Unused.
    25022502 */
     
    25552555 * @param   pMacro              The define to insert.
    25562556 */
    2557 static RTEXITCODE vbcppMacroInsert(PVBCPP pThis, PVBCPPDEF pMacro)
     2557static RTEXITCODE vbcppMacroInsert(PVBCPP pThis, PVBCPPMACRO pMacro)
    25582558{
    25592559    /*
     
    25892589         * line take precendece.
    25902590         */
    2591         PVBCPPDEF pOld = (PVBCPPDEF)RTStrSpaceGet(&pThis->StrSpace, pMacro->Core.pszString); Assert(pOld);
     2591        PVBCPPMACRO pOld = (PVBCPPMACRO)RTStrSpaceGet(&pThis->StrSpace, pMacro->Core.pszString); Assert(pOld);
    25922592        if (   pThis->fAllowRedefiningCmdLineDefines
    25932593            || pMacro->fCmdLine == pOld->fCmdLine)
     
    26762676     * Allocate a structure.
    26772677     */
    2678     size_t    cbDef = RT_OFFSETOF(VBCPPDEF, szValue[cchValue + 1 + cchDefine + 1 + cchArgNames])
     2678    size_t    cbDef = RT_OFFSETOF(VBCPPMACRO, szValue[cchValue + 1 + cchDefine + 1 + cchArgNames])
    26792679                    + sizeof(const char *) * cArgs;
    26802680    cbDef = RT_ALIGN_Z(cbDef, sizeof(const char *));
    2681     PVBCPPDEF pMacro  = (PVBCPPDEF)RTMemAlloc(cbDef);
     2681    PVBCPPMACRO pMacro  = (PVBCPPMACRO)RTMemAlloc(cbDef);
    26822682    if (!pMacro)
    26832683        return RTMsgErrorExit(RTEXITCODE_FAILURE, "out of memory");
     
    26882688    pszDst += cchDefine;
    26892689    *pszDst++ = '\0';
    2690     pMacro->fFunction = true;
    2691     pMacro->fVarArg   = false;
    2692     pMacro->fCmdLine  = fCmdLine;
    2693     pMacro->cArgs     = cArgs;
    2694     pMacro->papszArgs = (const char **)((uintptr_t)pMacro + cbDef - sizeof(const char *) * cArgs);
     2690    pMacro->fFunction   = true;
     2691    pMacro->fVarArg     = false;
     2692    pMacro->fCmdLine    = fCmdLine;
     2693    pMacro->fExpanding  = false;
     2694    pMacro->cArgs       = cArgs;
     2695    pMacro->papszArgs   = (const char **)((uintptr_t)pMacro + cbDef - sizeof(const char *) * cArgs);
    26952696    VBCPP_BITMAP_EMPTY(pMacro->bmArgs);
    2696     pMacro->cchValue  = cchValue;
     2697    pMacro->cchValue    = cchValue;
    26972698    memcpy(pMacro->szValue, pszValue, cchValue);
    26982699    pMacro->szValue[cchValue] = '\0';
     
    27932794        return RTEXITCODE_FAILURE;
    27942795
    2795     PVBCPPDEF pMacro = (PVBCPPDEF)RTMemAlloc(RT_OFFSETOF(VBCPPDEF, szValue[cchValue + 1 + cchDefine + 1]));
     2796    PVBCPPMACRO pMacro = (PVBCPPMACRO)RTMemAlloc(RT_OFFSETOF(VBCPPMACRO, szValue[cchValue + 1 + cchDefine + 1]));
    27962797    if (!pMacro)
    27972798        return RTMsgErrorExit(RTEXITCODE_FAILURE, "out of memory");
     
    28002801    memcpy((char *)pMacro->Core.pszString, pszDefine, cchDefine);
    28012802    ((char *)pMacro->Core.pszString)[cchDefine] = '\0';
    2802     pMacro->fFunction = false;
    2803     pMacro->fVarArg   = false;
    2804     pMacro->fCmdLine  = fCmdLine;
    2805     pMacro->cArgs     = 0;
    2806     pMacro->papszArgs = NULL;
     2803    pMacro->fFunction   = false;
     2804    pMacro->fVarArg     = false;
     2805    pMacro->fCmdLine    = fCmdLine;
     2806    pMacro->fExpanding  = false;
     2807    pMacro->cArgs       = 0;
     2808    pMacro->papszArgs   = NULL;
    28072809    VBCPP_BITMAP_EMPTY(pMacro->bmArgs);
    2808     pMacro->cchValue  = cchValue;
     2810    pMacro->cchValue    = cchValue;
    28092811    memcpy(pMacro->szValue, pszValue, cchValue);
    28102812    pMacro->szValue[cchValue] = '\0';
     
    28212823 * @param   pMacro              The macro.
    28222824 */
    2823 static RTEXITCODE vbcppMacroTryConvertToInlineD(PVBCPP pThis, PVBCPPDEF pMacro)
     2825static RTEXITCODE vbcppMacroTryConvertToInlineD(PVBCPP pThis, PVBCPPMACRO pMacro)
    28242826{
    28252827    AssertReturn(pMacro, vbcppError(pThis, "Internal error"));
     
    28342836    size_t      cchValue  = pMacro->cchValue;
    28352837
    2836     unsigned   i = 0;
    2837     PVBCPPDEF pMacro2;
     2838    unsigned    i = 0;
     2839    PVBCPPMACRO pMacro2;
    28382840    while (   i < 10
    28392841           && cchValue > 0
     
    30953097                 * Take action.
    30963098                 */
    3097                 PVBCPPDEF pMacro = vbcppMacroLookup(pThis, pchDefine, cchDefine);
     3099                PVBCPPMACRO pMacro = vbcppMacroLookup(pThis, pchDefine, cchDefine);
    30983100                if (    pMacro
    30993101                    &&  pThis->fRespectSourceDefines
     
    44984500                    else
    44994501                    {
    4500 
    45014502                        PVBCPPCOND pCond = pThis->pCondStack;
    45024503                        if (   pCond->enmResult != kVBCppEval_Undecided
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette