VirtualBox

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


Ignore:
Timestamp:
Nov 24, 2011 4:48:52 PM (13 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
75032
Message:

Main/ConsoleImpl: don't crash if Console::drvStatus_MediumEjected is called even if there is no medium to eject

File:
1 edited

Legend:

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

    r39336 r39411  
    95899589        if (!pMediumAtt.isNull())
    95909590        {
    9591             IMedium *pMedium;
     9591            IMedium *pMedium = NULL;
    95929592            HRESULT rc = pMediumAtt->COMGETTER(Medium)(&pMedium);
    95939593            AssertComRC(rc);
    9594             BOOL fHostDrive = FALSE;
    9595             rc = pMedium->COMGETTER(HostDrive)(&fHostDrive);
    9596             AssertComRC(rc);
    9597             if (!fHostDrive)
     9594            if (SUCCEEDED(rc) && pMedium)
    95989595            {
    9599                 alock.release();
    9600 
    9601                 ComPtr<IMediumAttachment> pNewMediumAtt;
    9602                 rc = pData->pConsole->mControl->EjectMedium(pMediumAtt, pNewMediumAtt.asOutParam());
    9603                 if (SUCCEEDED(rc))
    9604                     fireMediumChangedEvent(pData->pConsole->mEventSource, pNewMediumAtt);
    9605 
    9606                 alock.acquire();
    9607                 if (pNewMediumAtt != pMediumAtt)
     9596                BOOL fHostDrive = FALSE;
     9597                rc = pMedium->COMGETTER(HostDrive)(&fHostDrive);
     9598                AssertComRC(rc);
     9599                if (!fHostDrive)
    96089600                {
    9609                     pData->pmapMediumAttachments->erase(devicePath);
    9610                     pData->pmapMediumAttachments->insert(std::make_pair(devicePath, pNewMediumAtt));
     9601                    alock.release();
     9602
     9603                    ComPtr<IMediumAttachment> pNewMediumAtt;
     9604                    rc = pData->pConsole->mControl->EjectMedium(pMediumAtt, pNewMediumAtt.asOutParam());
     9605                    if (SUCCEEDED(rc))
     9606                        fireMediumChangedEvent(pData->pConsole->mEventSource, pNewMediumAtt);
     9607
     9608                    alock.acquire();
     9609                    if (pNewMediumAtt != pMediumAtt)
     9610                    {
     9611                        pData->pmapMediumAttachments->erase(devicePath);
     9612                        pData->pmapMediumAttachments->insert(std::make_pair(devicePath, pNewMediumAtt));
     9613                    }
    96119614                }
    96129615            }
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