VirtualBox

Changeset 4521 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Sep 5, 2007 7:39:34 AM (17 years ago)
Author:
vboxsync
Message:

Fixes for taking the address of a va_list parameter. (must make stack copy using va_copy or GCC/AMD64 won't work right.)

Location:
trunk/src/VBox
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Audio/audio.c

    r3670 r4521  
    337337}
    338338
    339 void AUD_vlog (const char *cap, const char *fmt, va_list ap)
    340 {
     339void AUD_vlog (const char *cap, const char *fmt, va_list va)
     340{
     341    va_list va2;
     342    va_copy (va2, va); /* Have to make a copy here or GCC will break. */
    341343    if (cap) {
    342         Log (("%s: %N", cap, fmt, &ap));
     344        Log (("%s: %N", cap, fmt, &va2));
    343345    }
    344346    else {
    345         Log (("%N", fmt, &ap));
    346     }
     347        Log (("%N", fmt, &va2));
     348    }
     349    va_end (va2);
    347350}
    348351
    349352void AUD_log (const char *cap, const char *fmt, ...)
    350353{
    351     va_list ap;
    352 
    353     va_start (ap, fmt);
    354     AUD_vlog (cap, fmt, ap);
    355     va_end (ap);
     354    va_list va;
     355
     356    va_start (va, fmt);
     357    AUD_vlog (cap, fmt, va);
     358    va_end (va);
    356359}
    357360
  • trunk/src/VBox/Frontends/VBoxBFE/VBoxBFE.cpp

    r4495 r4521  
    947947    else
    948948    {
     949        va_list va2;
     950        va_copy(va2, args); /* Have to make a copy here or GCC will break. */
    949951        RTStrPrintf(szError, sizeof(szError),
    950                     "%N!\nVBox status code: %d (%Vrc)", pszFormat, &args, rc, rc);
     952                    "%N!\nVBox status code: %d (%Vrc)", pszFormat, &va2, rc, rc);
    951953        RTPrintf("%s\n", szError);
     954        va_end(va2);
    952955    }
    953956}
     
    969972                                             const char *pszFormat, va_list args)
    970973{
    971     RTPrintf("%s: %s!\n%N!\n", fFatal ? "Error" : "Warning", pszErrorId, pszFormat, &args);
     974    va_list va2;
     975    va_copy(va2, args); /* Have to make a copy here or GCC will break. */
     976    RTPrintf("%s: %s!\n%N!\n", fFatal ? "Error" : "Warning", pszErrorId, pszFormat, &va2);
     977    va_end(va2);
    972978}
    973979
  • trunk/src/VBox/Main/ConsoleImpl.cpp

    r4426 r4521  
    54045404
    54055405    /* we ignore RT_SRC_POS_DECL arguments to avoid confusion of end-users */
     5406    va_list va2;
     5407    va_copy(va2, args); /* Have to make a copy here or GCC will break. */
    54065408    HRESULT hrc = setError (E_FAIL, tr ("%N.\n"
    54075409                                        "VBox status code: %d (%Vrc)"),
    5408                                     tr (pszFormat), &args,
     5410                                    tr (pszFormat), &va2,
    54095411                                    rc, rc);
    54105412    task->mProgress->notifyComplete (hrc);
     5413    va_end(va2);
    54115414}
    54125415
  • trunk/src/VBox/VMM/PDMDevice.cpp

    r4388 r4521  
    22102210{
    22112211    PDMDEV_ASSERT_DEVINS(pDevIns);
     2212#ifdef LOG_ENABLED
     2213    va_list va2;
     2214    va_copy(va2, args);
    22122215    LogFlow(("pdmR3DevHlp_DBGFStopV: caller='%s'/%d: pszFile=%p:{%s} iLine=%d pszFunction=%p:{%s} pszFormat=%p:{%s} (%N)\n",
    2213              pDevIns->pDevReg->szDeviceName, pDevIns->iInstance, pszFile, pszFile, iLine, pszFunction, pszFunction, pszFormat, pszFormat, pszFormat, &args));
     2216             pDevIns->pDevReg->szDeviceName, pDevIns->iInstance, pszFile, pszFile, iLine, pszFunction, pszFunction, pszFormat, pszFormat, pszFormat, &va2));
     2217    va_end(va2);
     2218#endif
    22142219
    22152220    PVM pVM = pDevIns->Internal.s.pVMHC;
  • trunk/src/VBox/VMM/VMMAll/VMAll.cpp

    r4520 r4521  
    7575     * Switch to EMT.
    7676     */
     77    va_list va2;
     78    va_copy(va2, args); /* Have to make a copy here or GCC will break. */
    7779    PVMREQ pReq;
    7880    VMR3ReqCall(pVM, &pReq, RT_INDEFINITE_WAIT, (PFNRT)vmR3SetErrorV, 7,  /* ASSUMES 3 source pos args! */
    79                 pVM, rc, RT_SRC_POS_ARGS, pszFormat, &args);
     81                pVM, rc, RT_SRC_POS_ARGS, pszFormat, &va2);
    8082    VMR3ReqFree(pReq);
     83    va_end(va2);
    8184
    8285#else
     
    250253     * Switch to EMT.
    251254     */
    252     va_list WorkaroundVA;
    253     va_copy(WorkaroundVA, args); /* Have to make a copy here or GCC will break. */
     255    va_list va2;
     256    va_copy(va2, args); /* Have to make a copy here or GCC will break. */
    254257    PVMREQ pReq;
    255258    VMR3ReqCall(pVM, &pReq, RT_INDEFINITE_WAIT, (PFNRT)vmR3SetRuntimeErrorV, 5,
    256                 pVM, fFatal, pszErrorID, pszFormat, &WorkaroundVA);
     259                pVM, fFatal, pszErrorID, pszFormat, &va2);
    257260    VMR3ReqFree(pReq);
    258     va_end(WorkaroundVA);
     261    va_end(va2);
    259262
    260263#else
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