VirtualBox

Changeset 1812 in kBuild


Ignore:
Timestamp:
Oct 10, 2008 6:01:29 AM (16 years ago)
Author:
bird
Message:

kmk: fixes for recusive variable mixup.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kmk/kbuild.c

    r1809 r1812  
    525525    if (memchr(pVar->value, '$', pVar->value_length))
    526526    {
    527         char *pszExpanded = allocated_variable_expand(pVar->value);
     527        unsigned int value_len;
     528        char *pszExpanded = allocated_variable_expand_2(pVar->value, pVar->value_length, &value_len);
    528529        free(pVar->value);
    529530        pVar->value = pszExpanded;
    530         pVar->value_length = strlen(pVar->value);
    531         pVar->value_alloc_len = pVar->value_length + 1;
     531        pVar->value_length = value_len;
     532        pVar->value_alloc_len = value_len + 1;
    532533    }
    533534    pVar->recursive = 0;
     
    10441045    pSdks->iGlobal = i;
    10451046    pSdks->cGlobal = 0;
    1046     sprintf(pszTmp, "$(SDKS) $(SDKS.%s) $(SDKS.%s) $(SDKS.%s) $(SDKS.%s.%s)",
    1047             pBldType->value,
    1048             pBldTrg->value,
    1049             pBldTrgArch->value,
    1050             pBldTrg->value, pBldTrgArch->value);
    1051     pszIterator = pSdks->apsz[0] = allocated_variable_expand(pszTmp);
     1047    cch = sprintf(pszTmp, "$(SDKS) $(SDKS.%s) $(SDKS.%s) $(SDKS.%s) $(SDKS.%s.%s)",
     1048                  pBldType->value,
     1049                  pBldTrg->value,
     1050                  pBldTrgArch->value,
     1051                  pBldTrg->value, pBldTrgArch->value);
     1052    pszIterator = pSdks->apsz[0] = allocated_variable_expand_2(pszTmp, cch, NULL);
    10521053    while ((pszCur = find_next_token(&pszIterator, &cchCur)) != 0)
    10531054        pSdks->cGlobal++;
     
    10571058    pSdks->iTarget = i;
    10581059    pSdks->cTarget = 0;
    1059     sprintf(pszTmp, "$(%s_SDKS) $(%s_SDKS.%s) $(%s_SDKS.%s) $(%s_SDKS.%s) $(%s_SDKS.%s.%s)",
    1060             pTarget->value,
    1061             pTarget->value, pBldType->value,
    1062             pTarget->value, pBldTrg->value,
    1063             pTarget->value, pBldTrgArch->value,
    1064             pTarget->value, pBldTrg->value, pBldTrgArch->value);
    1065     pszIterator = pSdks->apsz[1] = allocated_variable_expand(pszTmp);
     1060    cch = sprintf(pszTmp, "$(%s_SDKS) $(%s_SDKS.%s) $(%s_SDKS.%s) $(%s_SDKS.%s) $(%s_SDKS.%s.%s)",
     1061                  pTarget->value,
     1062                  pTarget->value, pBldType->value,
     1063                  pTarget->value, pBldTrg->value,
     1064                  pTarget->value, pBldTrgArch->value,
     1065                  pTarget->value, pBldTrg->value, pBldTrgArch->value);
     1066    pszIterator = pSdks->apsz[1] = allocated_variable_expand_2(pszTmp, cch, NULL);
    10661067    while ((pszCur = find_next_token(&pszIterator, &cchCur)) != 0)
    10671068        pSdks->cTarget++;
     
    10711072    pSdks->iSource = i;
    10721073    pSdks->cSource = 0;
    1073     sprintf(pszTmp, "$(%s_SDKS) $(%s_SDKS.%s) $(%s_SDKS.%s) $(%s_SDKS.%s) $(%s_SDKS.%s.%s)",
    1074             pSource->value,
    1075             pSource->value, pBldType->value,
    1076             pSource->value, pBldTrg->value,
    1077             pSource->value, pBldTrgArch->value,
    1078             pSource->value, pBldTrg->value, pBldTrgArch->value);
    1079     pszIterator = pSdks->apsz[2] = allocated_variable_expand(pszTmp);
     1074    cch = sprintf(pszTmp, "$(%s_SDKS) $(%s_SDKS.%s) $(%s_SDKS.%s) $(%s_SDKS.%s) $(%s_SDKS.%s.%s)",
     1075                  pSource->value,
     1076                  pSource->value, pBldType->value,
     1077                  pSource->value, pBldTrg->value,
     1078                  pSource->value, pBldTrgArch->value,
     1079                  pSource->value, pBldTrg->value, pBldTrgArch->value);
     1080    pszIterator = pSdks->apsz[2] = allocated_variable_expand_2(pszTmp, cch, NULL);
    10801081    while ((pszCur = find_next_token(&pszIterator, &cchCur)) != 0)
    10811082        pSdks->cSource++;
     
    10921093                  pTarget->value, pSource->value, pBldTrg->value, pBldTrgArch->value);
    10931094    assert(cch < cchTmp); (void)cch;
    1094     pszIterator = pSdks->apsz[3] = allocated_variable_expand(pszTmp);
     1095    pszIterator = pSdks->apsz[3] = allocated_variable_expand_2(pszTmp, cch, NULL);
    10951096    while ((pszCur = find_next_token(&pszIterator, &cchCur)) != 0)
    10961097        pSdks->cTargetSource++;
     
    14681469        if (!paVars[iVar].pVar)
    14691470            continue;
    1470         if (    paVars[iVar].pVar->flavor == f_simple
    1471             ||  !strchr(paVars[iVar].pVar->value, '$'))
     1471        if (    !paVars[iVar].pVar->recursive
     1472            ||  !memchr(paVars[iVar].pVar->value, '$', paVars[iVar].pVar->value_length))
    14721473        {
    14731474            paVars[iVar].pszExp = paVars[iVar].pVar->value;
     
    14761477        else
    14771478        {
    1478             paVars[iVar].pszExp = allocated_variable_expand(paVars[iVar].pVar->value);
    1479             paVars[iVar].cchExp = strlen(paVars[iVar].pszExp);
     1479            unsigned int cchExp;
     1480            paVars[iVar].pszExp = allocated_variable_expand_2(paVars[iVar].pVar->value, paVars[iVar].pVar->value_length, &cchExp);
     1481            paVars[iVar].cchExp = cchExp;
    14801482        }
    14811483        if (pDefPath)
     
    17721774    {
    17731775        do_variable_definition_2(NILF, "_DEPFILES_INCLUDED", pDep->value, pDep->value_length,
    1774                                  pDep->flavor == f_simple, 0, o_file, f_append, 0 /* !target_var */);
     1776                                 !pDep->recursive, 0, o_file, f_append, 0 /* !target_var */);
    17751777        eval_include_dep(pDep->value, NILF, iVer >= 2 ? incdep_queue : incdep_read_it);
    17761778    }
     
    18031805    pVar = kbuild_get_recursive_variable(pszSrcVar);
    18041806    do_variable_definition_2(NILF, pszDstVar, pVar->value, pVar->value_length,
    1805                              pVar->flavor == f_simple, 0, o_file, f_simple, 0 /* !target_var */);
     1807                             !pVar->recursive, 0, o_file, f_simple, 0 /* !target_var */);
    18061808
    18071809    memcpy(pszSrc, "_OUTPUT", sizeof("_OUTPUT"));
     
    18301832    memcpy(psz, pSource->value, pSource->value_length + 1);
    18311833    do_variable_definition_2(NILF, pszDstVar, pszVal, pVar->value_length + 1 + pDeps->value_length + 1 + pSource->value_length,
    1832                              pVar->flavor == f_simple && pDeps->flavor == f_simple && pSource->flavor == f_simple,
     1834                             !pVar->recursive && !pDeps->recursive && !pSource->recursive,
    18331835                             pszVal, o_file, f_simple, 0 /* !target_var */);
    18341836
     
    18441846    do_variable_definition_2(NILF, pszDstVar, pszVal,
    18451847                             pVar->value_length + 1 + pDirDep->value_length + 1 + pOrderDeps->value_length,
    1846                              pVar->flavor == f_simple && pDirDep->flavor == f_simple && pOrderDeps->flavor == f_simple,
     1848                             !pVar->recursive && !pDirDep->recursive && !pOrderDeps->recursive,
    18471849                             pszVal, o_file, f_simple, 0 /* !target_var */);
    18481850
     
    18601862    do_variable_definition_2(NILF, "_OUT_FILES", pszVal,
    18611863                             pVar->value_length + 1 + pOutput->value_length + 1 + pOutputMaybe->value_length,
    1862                              pVar->flavor == f_simple && pOutput->flavor == f_simple && pOutputMaybe->flavor == f_simple,
     1864                             !pVar->recursive && !pOutput->recursive && !pOutputMaybe->recursive,
    18631865                             pszVal, o_file, f_simple, 0 /* !target_var */);
    18641866
     
    18681870    memcpy(pszDstVar + pTarget->value_length, "_OBJS_", sizeof("_OBJS_"));
    18691871    do_variable_definition_2(NILF, pszDstVar, pObj->value, pObj->value_length,
    1870                              pObj->flavor == f_simple, 0, o_file, f_append, 0 /* !target_var */);
     1872                             !pObj->recursive, 0, o_file, f_append, 0 /* !target_var */);
    18711873
    18721874    /*
     
    18741876    */
    18751877    pVar = kbuild_get_recursive_variable("def_target_source_rule");
    1876     pszVal = allocated_variable_expand(pVar->value);
     1878    pszVal = allocated_variable_expand_2(pVar->value, pVar->value_length, NULL);
    18771879
    18781880    install_variable_buffer(&pszSavedVarBuf, &cchSavedVarBuf);
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