VirtualBox

Ignore:
Timestamp:
Jul 28, 2022 1:49:20 AM (3 years ago)
Author:
vboxsync
Message:

Add/Nt/VBoxCredProv: Make it compile in VBOX_WITH_NOCRT_STATIC mode. bugref:10261

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/WINNT/VBoxCredProv/VBoxCredProvProvider.cpp

    r93115 r95890  
    213213{
    214214    HRESULT hr = S_OK;
    215     DWORD dwErr;
    216215
    217216    VBoxCredProvVerbose(0, "VBoxCredProv::SetUsageScenario: enmUsageScenario=%d, dwFlags=%ld\n",
     
    227226            VBoxCredProvReportStatus(VBoxGuestFacilityStatus_Active);
    228227
    229             dwErr = LoadConfiguration();
     228            DWORD dwErr = LoadConfiguration();
    230229            if (dwErr != ERROR_SUCCESS)
    231230                VBoxCredProvVerbose(0, "VBoxCredProv: Error while loading configuration, error=%ld\n", dwErr);
     
    239238                break;
    240239
     240            hr = S_OK;
    241241            if (!m_pPoller)
    242242            {
    243                 try
     243#ifdef RT_EXCEPTIONS_ENABLED
     244                try { m_pPoller = new VBoxCredProvPoller(); }
     245                catch (std::bad_alloc &) { hr = E_OUTOFMEMORY; }
     246#else
     247                m_pPoller = new VBoxCredProvPoller();
     248                AssertStmt(m_pPoller, hr = E_OUTOFMEMORY);
     249#endif
     250                if (SUCCEEDED(hr))
    244251                {
    245                     m_pPoller = new VBoxCredProvPoller();
    246                     AssertPtr(m_pPoller);
    247252                    int rc = m_pPoller->Initialize(this);
    248253                    if (RT_FAILURE(rc))
    249254                        VBoxCredProvVerbose(0, "VBoxCredProv::SetUsageScenario: Error initializing poller thread, rc=%Rrc\n", rc);
    250                 }
    251                 catch (std::bad_alloc &ex)
    252                 {
    253                     NOREF(ex);
    254                     hr = E_OUTOFMEMORY;
     255/** @todo r=bird: Why is the initialize failure ignored here? */
    255256                }
    256257            }
     
    259260                && !m_pCred)
    260261            {
    261                 try
    262                 {
    263                     m_pCred = new VBoxCredProvCredential();
    264                     AssertPtr(m_pPoller);
     262#ifdef RT_EXCEPTIONS_ENABLED
     263                try { m_pCred = new VBoxCredProvCredential(); }
     264                catch (std::bad_alloc &) { hr = E_OUTOFMEMORY; }
     265#else
     266                m_pCred = new VBoxCredProvCredential();
     267                AssertStmt(m_pCred, hr = E_OUTOFMEMORY);
     268#endif
     269                if (SUCCEEDED(hr))
    265270                    hr = m_pCred->Initialize(m_enmUsageScenario);
    266                 }
    267                 catch (std::bad_alloc &ex)
    268                 {
    269                     NOREF(ex);
    270                     hr = E_OUTOFMEMORY;
    271                 }
    272271            }
    273272            else
     
    277276
    278277            /* If we failed, do some cleanup. */
     278/** @todo r=bird: Why aren't we cleaning up m_pPoller too? Very confusing given
     279 * that m_pCred wasn't necessarily even created above.  Always explain the WHY
     280 * when doing something that isn't logical like here! */
    279281            if (FAILED(hr))
    280282            {
     
    291293        case CPUS_CREDUI:          /* Displays an own UI. We don't need that. */
    292294        case CPUS_PLAP:            /* See Pre-Logon-Access Provider. Not needed (yet). */
    293 
    294295            hr = E_NOTIMPL;
    295296            break;
     
    571572VBoxCredProvProviderCreate(REFIID interfaceID, void **ppvInterface)
    572573{
    573     HRESULT hr;
    574 
    575     try
    576     {
    577         VBoxCredProvProvider *pProvider = new VBoxCredProvProvider();
    578         AssertPtr(pProvider);
    579         hr = pProvider->QueryInterface(interfaceID, ppvInterface);
    580         pProvider->Release();
    581     }
    582     catch (std::bad_alloc &ex)
    583     {
    584         NOREF(ex);
    585         hr = E_OUTOFMEMORY;
    586     }
     574    VBoxCredProvProvider *pProvider;
     575#ifdef RT_EXCEPTIONS_ENABLED
     576    try { pProvider = new VBoxCredProvProvider(); }
     577    catch (std::bad_alloc &) { AssertFailedReturn(E_OUTOFMEMORY); }
     578#else
     579    pProvider = new VBoxCredProvProvider();
     580    AssertReturn(pProvider, E_OUTOFMEMORY);
     581#endif
     582
     583    HRESULT hr = pProvider->QueryInterface(interfaceID, ppvInterface);
     584    pProvider->Release();
    587585
    588586    return hr;
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