VirtualBox

Changeset 79253 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Jun 20, 2019 2:21:53 AM (6 years ago)
Author:
vboxsync
Message:

Main/GuestFileImpl.cpp: Do not fail with a bland IPRT error when a read returns zero bytes, just return a zero byte result! bugref:9320

File:
1 edited

Legend:

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

    r79189 r79253  
    10361036        if (evtType == VBoxEventType_OnGuestFileRead)
    10371037        {
     1038            vrc = VINF_SUCCESS;
     1039
    10381040            ComPtr<IGuestFileReadEvent> pFileEvent = pIEvent;
    10391041            Assert(!pFileEvent.isNull());
    10401042
    1041             HRESULT hr;
    10421043            if (pvData)
    10431044            {
    10441045                com::SafeArray <BYTE> data;
    1045                 hr = pFileEvent->COMGETTER(Data)(ComSafeArrayAsOutParam(data));
    1046                 ComAssertComRC(hr);
     1046                HRESULT hrc1 = pFileEvent->COMGETTER(Data)(ComSafeArrayAsOutParam(data));
     1047                ComAssertComRC(hrc1);
    10471048                const size_t cbRead = data.size();
    10481049                if (cbRead)
     
    10531054                        vrc = VERR_BUFFER_OVERFLOW;
    10541055                }
    1055                 else
    1056                     vrc = VERR_NO_DATA;
     1056                /* else: used to be VERR_NO_DATA, but that messes stuff up. */
     1057
     1058                if (pcbRead)
     1059                {
     1060                    *pcbRead = (uint32_t)cbRead;
     1061                    Assert(*pcbRead == cbRead);
     1062                }
    10571063            }
    1058             if (pcbRead)
     1064            else if (pcbRead)
    10591065            {
    1060                 hr = pFileEvent->COMGETTER(Processed)((ULONG*)pcbRead);
    1061                 ComAssertComRC(hr);
     1066                *pcbRead = 0;
     1067                HRESULT hrc2 = pFileEvent->COMGETTER(Processed)((ULONG *)pcbRead);
     1068                ComAssertComRC(hrc2); NOREF(hrc2);
    10621069            }
    10631070        }
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