VirtualBox

Changeset 77436 in vbox for trunk/src/VBox/Main/src-client


Ignore:
Timestamp:
Feb 22, 2019 5:40:00 PM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
129000
Message:

Main: Eradicate the use of BSTR in regular API code, there were leaks in almost every occurrence. Also do some Bstr->Utf8Str shuffling to reduce the number of conversions.

Location:
trunk/src/VBox/Main/src-client
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/src-client/ClientTokenHolder.cpp

    r76553 r77436  
    136136    mThreadSem = CTHTHREADSEMARG;
    137137
    138     Bstr bstrTokenId(strTokenId);
    139 
    140138    /*
    141139     * Since there is no guarantee that the constructor and destructor will be
     
    148146
    149147    void *data[3];
    150     data[0] = (void*)(BSTR)bstrTokenId.raw();
     148    data[0] = (void*)strTokenId.c_str();
    151149    data[1] = (void*)mThreadSem;
    152150    data[2] = 0; /* will get an output from the thread */
     
    172170    }
    173171#elif defined(RT_OS_OS2)
    174     Bstr bstrTokenId(strTokenId);
    175 
    176172    /*
    177173     * Since there is no guarantee that the constructor and destructor will be
     
    183179
    184180    void *data[3];
    185     data[0] = (void*)bstrTokenId.raw();
     181    data[0] = (void*)strTokenId.c_str();
    186182    data[1] = (void*)mSem;
    187183    data[2] = (void*)false; /* will get the thread result here */
     
    251247
    252248# if defined(RT_OS_WINDOWS)
    253     BSTR sessionId = (BSTR)data[0];
     249    Utf8Str strSessionId = (const char *)data[0];
    254250    HANDLE initDoneSem = (HANDLE)data[1];
    255251
    256     HANDLE mutex = ::OpenMutex(MUTEX_ALL_ACCESS, FALSE, sessionId);
     252    HANDLE mutex = ::OpenMutex(MUTEX_ALL_ACCESS, FALSE, Bstr(strSessionId).raw());
    257253    AssertMsg(mutex, ("cannot open token, err=%d\n", ::GetLastError()));
    258254
     
    286282    ::SetEvent(initDoneSem);
    287283# elif defined(RT_OS_OS2)
    288     Utf8Str sessionId = (BSTR)data[0];
     284    Utf8Str strSessionId = (const char *)data[0];
    289285    RTSEMEVENT finishSem = (RTSEMEVENT)data[1];
    290286
    291     LogFlowFunc(("sessionId='%s', finishSem=%p\n", sessionId.raw(), finishSem));
     287    LogFlowFunc(("strSessionId='%s', finishSem=%p\n", strSessionId.c_str(), finishSem));
    292288
    293289    HMTX mutex = NULLHANDLE;
    294     APIRET arc = ::DosOpenMutexSem((PSZ)sessionId.raw(), &mutex);
     290    APIRET arc = ::DosOpenMutexSem((PSZ)strSessionId.c_str(), &mutex);
    295291    AssertMsg(arc == NO_ERROR, ("cannot open token, arc=%ld\n", arc));
    296292
  • trunk/src/VBox/Main/src-client/ConsoleImpl2.cpp

    r77100 r77436  
    51695169
    51705170                    uint16_t port = 0;
    5171                     BSTR r = pfs[i];
    5172                     Utf8Str utf = Utf8Str(r);
     5171                    Utf8Str utf = pfs[i];
    51735172                    Utf8Str strName;
    51745173                    Utf8Str strProto;
  • trunk/src/VBox/Main/src-client/GuestImpl.cpp

    r76553 r77436  
    376376        ComPtr<IMachine> ptrMachine(mParent->i_machine());
    377377        alock.release();
    378         BSTR bstr;
    379         hrc = ptrMachine->COMGETTER(OSTypeId)(&bstr);
     378        Bstr bstr;
     379        hrc = ptrMachine->COMGETTER(OSTypeId)(bstr.asOutParam());
    380380        aOSTypeId = bstr;
    381381    }
  • trunk/src/VBox/Main/src-client/USBDeviceImpl.cpp

    r76553 r77436  
    7171    ComAssertComRCRet(hrc, hrc);
    7272
    73     BSTR tmp;
    74     BSTR *bptr = &tmp;
    75 
    76     hrc = aUSBDevice->COMGETTER(Manufacturer)(bptr);
    77     ComAssertComRCRet(hrc, hrc);
    78     unconst(mData.manufacturer) = Utf8Str(tmp);
    79 
    80     hrc = aUSBDevice->COMGETTER(Product)(bptr);
    81     ComAssertComRCRet(hrc, hrc);
    82     unconst(mData.product) = Utf8Str(tmp);
    83 
    84     hrc = aUSBDevice->COMGETTER(SerialNumber)(bptr);
    85     ComAssertComRCRet(hrc, hrc);
    86     unconst(mData.serialNumber) = Utf8Str(tmp);
    87 
    88     hrc = aUSBDevice->COMGETTER(Address)(bptr);
    89     ComAssertComRCRet(hrc, hrc);
    90     unconst(mData.address) = Utf8Str(tmp);
    91 
    92     hrc = aUSBDevice->COMGETTER(Backend)(bptr);
    93     ComAssertComRCRet(hrc, hrc);
    94     unconst(mData.backend) = Utf8Str(tmp);
     73    Bstr bstr;
     74
     75    hrc = aUSBDevice->COMGETTER(Manufacturer)(bstr.asOutParam());
     76    ComAssertComRCRet(hrc, hrc);
     77    unconst(mData.manufacturer) = bstr;
     78
     79    hrc = aUSBDevice->COMGETTER(Product)(bstr.asOutParam());
     80    ComAssertComRCRet(hrc, hrc);
     81    unconst(mData.product) = bstr;
     82
     83    hrc = aUSBDevice->COMGETTER(SerialNumber)(bstr.asOutParam());
     84    ComAssertComRCRet(hrc, hrc);
     85    unconst(mData.serialNumber) = bstr;
     86
     87    hrc = aUSBDevice->COMGETTER(Address)(bstr.asOutParam());
     88    ComAssertComRCRet(hrc, hrc);
     89    unconst(mData.address) = bstr;
     90
     91    hrc = aUSBDevice->COMGETTER(Backend)(bstr.asOutParam());
     92    ComAssertComRCRet(hrc, hrc);
     93    unconst(mData.backend) = bstr;
    9594
    9695    hrc = aUSBDevice->COMGETTER(Port)(&unconst(mData.port));
Note: See TracChangeset for help on using the changeset viewer.

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