VirtualBox

Changeset 56909 in vbox for trunk


Ignore:
Timestamp:
Jul 10, 2015 6:09:14 AM (10 years ago)
Author:
vboxsync
Message:

DnD: Changed DnDURIList's allocation scheme for stored DnDURIObject objects.

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/GuestHost/DragAndDrop.h

    r56903 r56909  
    177177
    178178    void Clear(void);
    179     DnDURIObject &First(void) { return m_lstTree.first(); }
    180     bool IsEmpty(void) { return m_lstTree.isEmpty(); }
     179    DnDURIObject *First(void) { return m_lstTree.first(); }
     180    bool IsEmpty(void) const { return m_lstTree.isEmpty(); }
    181181    void RemoveFirst(void);
    182182    int RootFromURIData(const void *pvData, size_t cbData, uint32_t fFlags);
    183183    RTCString RootToString(const RTCString &strPathBase = "", const RTCString &strSeparator = "\r\n");
    184     size_t RootCount(void) { return m_lstRoot.size(); }
    185     uint32_t TotalCount(void) { return m_cTotal; }
    186     size_t TotalBytes(void) { return m_cbTotal; }
     184    size_t RootCount(void) const { return m_lstRoot.size(); }
     185    uint32_t TotalCount(void) const { return m_cTotal; }
     186    size_t TotalBytes(void) const { return m_cbTotal; }
    187187
    188188protected:
     
    196196     *  Note: All paths are kept internally as UNIX paths for
    197197     *        easier conversion/handling!  */
    198     RTCList<RTCString>     m_lstRoot;
    199     /** List of all URI objects added. */
    200     RTCList<DnDURIObject>  m_lstTree;
     198    RTCList<RTCString>      m_lstRoot;
     199    /** List of all URI objects added. The list's content
     200     *  might vary depending on how the objects are being
     201     *  added (lazy or not). */
     202    RTCList<DnDURIObject *> m_lstTree;
    201203    /** Total number of all URI objects. */
    202     uint32_t               m_cTotal;
     204    uint32_t                m_cTotal; /** @todo Really needed? m_lstTree.size()? */
    203205    /** Total size of all URI objects, that is, the file
    204206     *  size of all objects (in bytes). */
    205     size_t                 m_cbTotal;
     207    size_t                  m_cbTotal;
    206208};
    207209#endif /* ___VBox_GuestHost_DragAndDrop_h */
  • trunk/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibDragAndDrop.cpp

    r56904 r56909  
    12311231}
    12321232
    1233 static int vbglR3DnDGHSendDir(PVBGLR3GUESTDNDCMDCTX pCtx, DnDURIObject &obj)
    1234 {
    1235     AssertPtrReturn(pCtx,                                  VERR_INVALID_POINTER);
    1236     AssertReturn(obj.GetType() == DnDURIObject::Directory, VERR_INVALID_PARAMETER);
     1233static int vbglR3DnDGHSendDir(PVBGLR3GUESTDNDCMDCTX pCtx, DnDURIObject *pObj)
     1234{
     1235    AssertPtrReturn(pObj,                                    VERR_INVALID_POINTER);
     1236    AssertPtrReturn(pCtx,                                    VERR_INVALID_POINTER);
     1237    AssertReturn(pObj->GetType() == DnDURIObject::Directory, VERR_INVALID_PARAMETER);
    12371238
    12381239    DragAndDropSvc::VBOXDNDGHSENDDIRMSG Msg;
     
    12431244    Msg.hdr.cParms      = 3;
    12441245
    1245     RTCString strPath = obj.GetDestPath();
     1246    RTCString strPath = pObj->GetDestPath();
    12461247    LogFlowFunc(("strDir=%s (%zu), fMode=0x%x\n",
    1247                  strPath.c_str(), strPath.length(), obj.GetMode()));
     1248                 strPath.c_str(), strPath.length(), pObj->GetMode()));
    12481249
    12491250    Msg.pvName.SetPtr((void *)strPath.c_str(), (uint32_t)(strPath.length() + 1));
    12501251    Msg.cbName.SetUInt32((uint32_t)(strPath.length() + 1));
    1251     Msg.fMode.SetUInt32(obj.GetMode());
     1252    Msg.fMode.SetUInt32(pObj->GetMode());
    12521253
    12531254    int rc = vbglR3DoIOCtl(VBOXGUEST_IOCTL_HGCM_CALL(sizeof(Msg)), &Msg, sizeof(Msg));
     
    12591260}
    12601261
    1261 static int vbglR3DnDGHSendFile(PVBGLR3GUESTDNDCMDCTX pCtx, DnDURIObject &obj)
    1262 {
    1263     AssertPtrReturn(pCtx,                             VERR_INVALID_POINTER);
    1264     AssertReturn(obj.GetType() == DnDURIObject::File, VERR_INVALID_PARAMETER);
    1265     AssertReturn(obj.IsOpen(),                        VERR_INVALID_STATE);
     1262static int vbglR3DnDGHSendFile(PVBGLR3GUESTDNDCMDCTX pCtx, DnDURIObject *pObj)
     1263{
     1264    AssertPtrReturn(pCtx,                               VERR_INVALID_POINTER);
     1265    AssertPtrReturn(pObj,                               VERR_INVALID_POINTER);
     1266    AssertReturn(pObj->GetType() == DnDURIObject::File, VERR_INVALID_PARAMETER);
     1267    AssertReturn(pObj->IsOpen(),                        VERR_INVALID_STATE);
    12661268
    12671269    uint32_t cbBuf = _64K;           /** @todo Make this configurable? */
     
    12721274    int rc;
    12731275
    1274     RTCString strPath = obj.GetDestPath();
    1275 
    1276     LogFlowFunc(("strFile=%s (%zu), cbSize=%RU64, fMode=0x%x\n", strPath.c_str(), strPath.length(), obj.GetSize(), obj.GetMode()));
     1276    RTCString strPath = pObj->GetDestPath();
     1277
     1278    LogFlowFunc(("strFile=%s (%zu), cbSize=%RU64, fMode=0x%x\n", strPath.c_str(), strPath.length(),
     1279                 pObj->GetSize(), pObj->GetMode()));
    12771280    LogFlowFunc(("uProtocol=%RU32, uClientID=%RU32\n", pCtx->uProtocol, pCtx->uClientID));
    12781281
     
    12901293        MsgHdr.cbName.SetUInt32((uint32_t)(strPath.length() + 1));
    12911294        MsgHdr.uFlags.SetUInt32(0);                                                      /* Flags; unused at the moment. */
    1292         MsgHdr.fMode.SetUInt32(obj.GetMode());                                           /* File mode */
    1293         MsgHdr.cbTotal.SetUInt64(obj.GetSize());                                         /* File size (in bytes). */
     1295        MsgHdr.fMode.SetUInt32(pObj->GetMode());                                         /* File mode */
     1296        MsgHdr.cbTotal.SetUInt64(pObj->GetSize());                                       /* File size (in bytes). */
    12941297
    12951298        rc = vbglR3DoIOCtl(VBOXGUEST_IOCTL_HGCM_CALL(sizeof(MsgHdr)), &MsgHdr, sizeof(MsgHdr));
     
    13191322            Msg.u.v1.pvName.SetPtr((void *)strPath.c_str(), (uint32_t)(strPath.length() + 1));
    13201323            Msg.u.v1.cbName.SetUInt32((uint32_t)(strPath.length() + 1));
    1321             Msg.u.v1.fMode.SetUInt32(obj.GetMode());
     1324            Msg.u.v1.fMode.SetUInt32(pObj->GetMode());
    13221325        }
    13231326        else
     
    13291332        }
    13301333
    1331         uint64_t cbToReadTotal  = obj.GetSize();
     1334        uint64_t cbToReadTotal  = pObj->GetSize();
    13321335        uint64_t cbWrittenTotal = 0;
    13331336        while (cbToReadTotal)
     
    13361339            uint32_t cbRead   = 0;
    13371340            if (cbToRead)
    1338                 rc = obj.Read(pvBuf, cbToRead, &cbRead);
     1341                rc = pObj->Read(pvBuf, cbToRead, &cbRead);
    13391342
    13401343            LogFlowFunc(("cbToReadTotal=%RU64, cbToRead=%RU32, cbRead=%RU32, rc=%Rrc\n",
     
    13701373            cbWrittenTotal += cbRead;
    13711374
    1372             LogFlowFunc(("%RU64/%RU64 -- %RU8%%\n", cbWrittenTotal, obj.GetSize(), cbWrittenTotal * 100 / obj.GetSize()));
     1375            LogFlowFunc(("%RU64/%RU64 -- %RU8%%\n", cbWrittenTotal, pObj->GetSize(), cbWrittenTotal * 100 / pObj->GetSize()));
    13731376        };
    13741377    }
     
    13801383}
    13811384
    1382 static int vbglR3DnDGHSendURIObject(PVBGLR3GUESTDNDCMDCTX pCtx, DnDURIObject &obj)
     1385static int vbglR3DnDGHSendURIObject(PVBGLR3GUESTDNDCMDCTX pCtx, DnDURIObject *pObj)
    13831386{
    13841387    AssertPtrReturn(pCtx, VERR_INVALID_POINTER);
     1388    AssertPtrReturn(pObj, VERR_INVALID_POINTER);
    13851389
    13861390    int rc;
    13871391
    1388     switch (obj.GetType())
     1392    switch (pObj->GetType())
    13891393    {
    13901394        case DnDURIObject::Directory:
    1391             rc = vbglR3DnDGHSendDir(pCtx, obj);
     1395            rc = vbglR3DnDGHSendDir(pCtx, pObj);
    13921396            break;
    13931397
    13941398        case DnDURIObject::File:
    1395             rc = vbglR3DnDGHSendFile(pCtx, obj);
     1399            rc = vbglR3DnDGHSendFile(pCtx, pObj);
    13961400            break;
    13971401
    13981402        default:
    1399             AssertMsgFailed(("URI type %ld not implemented\n", obj.GetType()));
     1403            AssertMsgFailed(("Object type %ld not implemented\n", pObj->GetType()));
    14001404            rc = VERR_NOT_IMPLEMENTED;
    14011405            break;
     
    14411445        while (!lstURI.IsEmpty())
    14421446        {
    1443             DnDURIObject &nextObj = lstURI.First();
    1444 
    1445             rc = vbglR3DnDGHSendURIObject(pCtx, nextObj);
     1447            DnDURIObject *pNextObj = lstURI.First();
     1448
     1449            rc = vbglR3DnDGHSendURIObject(pCtx, pNextObj);
    14461450            if (RT_FAILURE(rc))
    14471451                break;
  • trunk/src/VBox/GuestHost/DragAndDrop/DnDURIList.cpp

    r56903 r56909  
    4343DnDURIList::~DnDURIList(void)
    4444{
     45    Clear();
    4546}
    4647
     
    6061            LogFlowFunc(("File '%s' -> '%s' (%RU64)\n", pcszSource, pcszTarget, (uint64_t)objInfo.cbObject));
    6162
    62             DnDURIObject objFile(DnDURIObject::File, pcszSource, pcszTarget);
    63             if (fFlags & DNDURILIST_FLAGS_KEEP_OPEN) /* Shall we keep the file open while being added to this list? */
    64             {
    65                 /** @todo Add a standard fOpen mode for this list. */
    66                 rc = objFile.Open(DnDURIObject::Source, RTFILE_O_OPEN | RTFILE_O_READ | RTFILE_O_DENY_WRITE, objInfo.Attr.fMode);
    67             }
    68 
    69             if (RT_SUCCESS(rc))
    70             {
    71                 m_lstTree.append(objFile);
    72 
    73                 m_cTotal++;
    74                 m_cbTotal += (uint64_t)objInfo.cbObject;
    75             }
     63            DnDURIObject *pObjFile= new DnDURIObject(DnDURIObject::File, pcszSource, pcszTarget);
     64            if (pObjFile)
     65            {
     66                if (fFlags & DNDURILIST_FLAGS_KEEP_OPEN) /* Shall we keep the file open while being added to this list? */
     67                {
     68                    /** @todo Add a standard fOpen mode for this list. */
     69                    rc = pObjFile->Open(DnDURIObject::Source, RTFILE_O_OPEN | RTFILE_O_READ | RTFILE_O_DENY_WRITE, objInfo.Attr.fMode);
     70                }
     71
     72                if (RT_SUCCESS(rc))
     73                {
     74                    m_lstTree.append(pObjFile);
     75
     76                    m_cTotal++;
     77                    m_cbTotal += pObjFile->GetSize();
     78                }
     79            }
     80            else
     81                rc = VERR_NO_MEMORY;
    7682        }
    7783        else if (RTFS_IS_DIRECTORY(objInfo.Attr.fMode))
     
    7985            LogFlowFunc(("Directory '%s' -> '%s' \n", pcszSource, pcszTarget));
    8086
    81             m_lstTree.append(DnDURIObject(DnDURIObject::Directory, pcszSource, pcszTarget,
    82                              objInfo.Attr.fMode, 0 /* Size */));
     87            DnDURIObject *pObjDir= new DnDURIObject(DnDURIObject::Directory, pcszSource, pcszTarget,
     88                                                    objInfo.Attr.fMode, 0 /* Size */);
     89            if (pObjDir)
     90            {
     91                m_lstTree.append(pObjDir);
     92            }
     93            else
     94                rc = VERR_NO_MEMORY;
    8395
    8496            /** @todo Add DNDURILIST_FLAGS_KEEP_OPEN handling. */
     
    397409{
    398410    m_lstRoot.clear();
     411
     412    for (size_t i = 0; i < m_lstTree.size(); i++)
     413    {
     414        DnDURIObject *pCurObj = m_lstTree.at(i);
     415        AssertPtr(pCurObj);
     416        RTMemFree(pCurObj);
     417    }
    399418    m_lstTree.clear();
    400419
     
    408427        return;
    409428
    410     DnDURIObject &curObj = m_lstTree.first();
    411 
    412     uint64_t cbSize = curObj.GetSize();
     429    DnDURIObject *pCurObj = m_lstTree.first();
     430    AssertPtr(pCurObj);
     431
     432    uint64_t cbSize = pCurObj->GetSize();
    413433    Assert(m_cbTotal >= cbSize);
    414434    m_cbTotal -= cbSize; /* Adjust total size. */
    415435
    416     curObj.Close();
     436    pCurObj->Close();
     437    RTMemFree(pCurObj);
    417438
    418439    m_lstTree.removeFirst();
  • trunk/src/VBox/Main/include/GuestDnDTargetImpl.h

    r55963 r56909  
    8585    int i_cancelOperation(void);
    8686    int i_sendData(PSENDDATACTX pCtx, RTMSINTERVAL msTimeout);
    87     int i_sendDirectory(PSENDDATACTX pCtx, GuestDnDMsg *pMsg, DnDURIObject &aDirectory);
    88     int i_sendFile(PSENDDATACTX pCtx, GuestDnDMsg *pMsg, DnDURIObject &aFile);
    89     int i_sendFileData(PSENDDATACTX pCtx, GuestDnDMsg *pMsg, DnDURIObject &aFile);
     87    int i_sendDirectory(PSENDDATACTX pCtx, GuestDnDMsg *pMsg, DnDURIObject *pObject);
     88    int i_sendFile(PSENDDATACTX pCtx, GuestDnDMsg *pMsg, DnDURIObject *pObject);
     89    int i_sendFileData(PSENDDATACTX pCtx, GuestDnDMsg *pMsg, DnDURIObject *pObject);
    9090    int i_sendURIData(PSENDDATACTX pCtx, RTMSINTERVAL msTimeout);
    9191    int i_sendRawData(PSENDDATACTX pCtx, RTMSINTERVAL msTimeout);
  • trunk/src/VBox/Main/src-client/GuestDnDTargetImpl.cpp

    r56657 r56909  
    756756}
    757757
    758 int GuestDnDTarget::i_sendDirectory(PSENDDATACTX pCtx, GuestDnDMsg *pMsg, DnDURIObject &aDirectory)
    759 {
    760     AssertPtrReturn(pCtx, VERR_INVALID_POINTER);
    761 
    762     RTCString strPath = aDirectory.GetDestPath();
     758int GuestDnDTarget::i_sendDirectory(PSENDDATACTX pCtx, GuestDnDMsg *pMsg, DnDURIObject *pObject)
     759{
     760    AssertPtrReturn(pObject, VERR_INVALID_POINTER);
     761    AssertPtrReturn(pCtx,    VERR_INVALID_POINTER);
     762
     763    RTCString strPath = pObject->GetDestPath();
    763764    if (strPath.isEmpty())
    764765        return VERR_INVALID_PARAMETER;
     
    771772    pMsg->setNextString(strPath.c_str());                  /* path */
    772773    pMsg->setNextUInt32((uint32_t)(strPath.length() + 1)); /* path length - note: Maximum is RTPATH_MAX on guest side. */
    773     pMsg->setNextUInt32(aDirectory.GetMode());             /* mode */
     774    pMsg->setNextUInt32(pObject->GetMode());             /* mode */
    774775
    775776    return VINF_SUCCESS;
    776777}
    777778
    778 int GuestDnDTarget::i_sendFile(PSENDDATACTX pCtx, GuestDnDMsg *pMsg, DnDURIObject &aFile)
    779 {
    780     AssertPtrReturn(pCtx, VERR_INVALID_POINTER);
    781 
    782     RTCString strPathSrc = aFile.GetSourcePath();
     779int GuestDnDTarget::i_sendFile(PSENDDATACTX pCtx, GuestDnDMsg *pMsg, DnDURIObject *pObject)
     780{
     781    AssertPtrReturn(pObject, VERR_INVALID_POINTER);
     782    AssertPtrReturn(pCtx,    VERR_INVALID_POINTER);
     783
     784    RTCString strPathSrc = pObject->GetSourcePath();
    783785    if (strPathSrc.isEmpty())
    784786        return VERR_INVALID_PARAMETER;
     
    789791                 strPathSrc.c_str(), mData.mcbBlockSize, mDataBase.mProtocolVersion));
    790792
    791     bool fOpen = aFile.IsOpen();
     793    bool fOpen = pObject->IsOpen();
    792794    if (!fOpen)
    793795    {
    794796        LogFlowFunc(("Opening \"%s\" ...\n", strPathSrc.c_str()));
    795         rc = aFile.OpenEx(strPathSrc, DnDURIObject::File, DnDURIObject::Source,
     797        rc = pObject->OpenEx(strPathSrc, DnDURIObject::File, DnDURIObject::Source,
    796798                          RTFILE_O_OPEN | RTFILE_O_READ | RTFILE_O_DENY_WRITE, 0 /* fFlags */);
    797799        if (RT_FAILURE(rc))
     
    813815                pMsg->setType(DragAndDropSvc::HOST_DND_HG_SND_FILE_HDR);
    814816                pMsg->setNextUInt32(0);                                            /* context ID */
    815                 rc = pMsg->setNextString(aFile.GetDestPath().c_str());             /* pvName */
     817                rc = pMsg->setNextString(pObject->GetDestPath().c_str());             /* pvName */
    816818                AssertRC(rc);
    817                 pMsg->setNextUInt32((uint32_t)(aFile.GetDestPath().length() + 1)); /* cbName */
     819                pMsg->setNextUInt32((uint32_t)(pObject->GetDestPath().length() + 1)); /* cbName */
    818820                pMsg->setNextUInt32(0);                                            /* uFlags */
    819                 pMsg->setNextUInt32(aFile.GetMode());                              /* fMode */
    820                 pMsg->setNextUInt64(aFile.GetSize());                              /* uSize */
     821                pMsg->setNextUInt32(pObject->GetMode());                              /* fMode */
     822                pMsg->setNextUInt64(pObject->GetSize());                              /* uSize */
    821823
    822824                LogFlowFunc(("Sending file header ...\n"));
    823825                LogRel2(("DnD: Transferring host file to guest: %s (%RU64 bytes, mode 0x%x)\n",
    824                          strPathSrc.c_str(), aFile.GetSize(), aFile.GetMode()));
     826                         strPathSrc.c_str(), pObject->GetSize(), pObject->GetMode()));
    825827
    826828                /** @todo Set progress object title to current file being transferred? */
     
    842844        && fSendFileData)
    843845    {
    844         rc = i_sendFileData(pCtx, pMsg, aFile);
     846        rc = i_sendFileData(pCtx, pMsg, pObject);
    845847    }
    846848
     
    849851}
    850852
    851 int GuestDnDTarget::i_sendFileData(PSENDDATACTX pCtx, GuestDnDMsg *pMsg, DnDURIObject &aFile)
    852 {
    853     AssertPtrReturn(pCtx, VERR_INVALID_POINTER);
    854     AssertPtrReturn(pMsg, VERR_INVALID_POINTER);
     853int GuestDnDTarget::i_sendFileData(PSENDDATACTX pCtx, GuestDnDMsg *pMsg, DnDURIObject *pObject)
     854{
     855    AssertPtrReturn(pObject, VERR_INVALID_POINTER);
     856    AssertPtrReturn(pCtx,    VERR_INVALID_POINTER);
     857    AssertPtrReturn(pMsg,    VERR_INVALID_POINTER);
    855858
    856859    GuestDnDResponse *pResp = pCtx->mpResp;
     
    877880    if (mDataBase.mProtocolVersion <= 1)
    878881    {
    879         pMsg->setNextString(aFile.GetDestPath().c_str());                  /* pvName */
    880         pMsg->setNextUInt32((uint32_t)(aFile.GetDestPath().length() + 1)); /* cbName */
     882        pMsg->setNextString(pObject->GetDestPath().c_str());                  /* pvName */
     883        pMsg->setNextUInt32((uint32_t)(pObject->GetDestPath().length() + 1)); /* cbName */
    881884    }
    882885    else
     
    888891    uint32_t cbRead = 0;
    889892
    890     int rc = aFile.Read(pCtx->mURI.pvScratchBuf, pCtx->mURI.cbScratchBuf, &cbRead);
     893    int rc = pObject->Read(pCtx->mURI.pvScratchBuf, pCtx->mURI.cbScratchBuf, &cbRead);
    891894    if (RT_SUCCESS(rc))
    892895    {
     
    897900            pMsg->setNextPointer(pCtx->mURI.pvScratchBuf, cbRead);  /* pvData */
    898901            pMsg->setNextUInt32(cbRead);                            /* cbData */
    899             pMsg->setNextUInt32(aFile.GetMode());                   /* fMode */
     902            pMsg->setNextUInt32(pObject->GetMode());                   /* fMode */
    900903        }
    901904        else
     
    905908        }
    906909
    907         if (aFile.IsComplete()) /* Done reading? */
    908         {
    909             LogRel2(("DnD: File transfer to guest complete: %s\n", aFile.GetSourcePath().c_str()));
    910             LogFlowFunc(("File \"%s\" complete\n", aFile.GetSourcePath().c_str()));
     910        if (pObject->IsComplete()) /* Done reading? */
     911        {
     912            LogRel2(("DnD: File transfer to guest complete: %s\n", pObject->GetSourcePath().c_str()));
     913            LogFlowFunc(("File \"%s\" complete\n", pObject->GetSourcePath().c_str()));
    911914            rc = VINF_EOF;
    912915        }
     
    12611264
    12621265    Assert(!lstURI.IsEmpty());
    1263     DnDURIObject &curObj = lstURI.First();
    1264 
    1265     uint32_t fMode = curObj.GetMode();
     1266    DnDURIObject *pCurObj = lstURI.First();
     1267
     1268    uint32_t fMode = pCurObj->GetMode();
    12661269    LogFlowFunc(("Processing srcPath=%s, dstPath=%s, fMode=0x%x, cbSize=%RU32, fIsDir=%RTbool, fIsFile=%RTbool\n",
    1267                  curObj.GetSourcePath().c_str(), curObj.GetDestPath().c_str(),
    1268                  fMode, curObj.GetSize(),
     1270                 pCurObj->GetSourcePath().c_str(), pCurObj->GetDestPath().c_str(),
     1271                 fMode, pCurObj->GetSize(),
    12691272                 RTFS_IS_DIRECTORY(fMode), RTFS_IS_FILE(fMode)));
    12701273
    12711274    if (RTFS_IS_DIRECTORY(fMode))
    12721275    {
    1273         rc = i_sendDirectory(pCtx, pMsg, curObj);
     1276        rc = i_sendDirectory(pCtx, pMsg, pCurObj);
    12741277    }
    12751278    else if (RTFS_IS_FILE(fMode))
    12761279    {
    1277         rc = i_sendFile(pCtx, pMsg, curObj);
     1280        rc = i_sendFile(pCtx, pMsg, pCurObj);
    12781281    }
    12791282    else
    12801283    {
    12811284        AssertMsgFailed(("fMode=0x%x is not supported for srcPath=%s, dstPath=%s\n",
    1282                          fMode, curObj.GetSourcePath().c_str(), curObj.GetDestPath().c_str()));
     1285                         fMode, pCurObj->GetSourcePath().c_str(), pCurObj->GetDestPath().c_str()));
    12831286        rc = VERR_NOT_SUPPORTED;
    12841287    }
    12851288
    12861289    bool fRemove = false; /* Remove current entry? */
    1287     if (   curObj.IsComplete()
     1290    if (   pCurObj->IsComplete()
    12881291        || RT_FAILURE(rc))
    12891292    {
     
    12931296    if (fRemove)
    12941297    {
    1295         LogFlowFunc(("Removing \"%s\" from list, rc=%Rrc\n", curObj.GetSourcePath().c_str(), rc));
     1298        LogFlowFunc(("Removing \"%s\" from list, rc=%Rrc\n", pCurObj->GetSourcePath().c_str(), rc));
    12961299        lstURI.RemoveFirst();
    12971300    }
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