VirtualBox

Changeset 56184 in vbox


Ignore:
Timestamp:
Jun 1, 2015 2:23:41 PM (10 years ago)
Author:
vboxsync
Message:

DnDURIList: Fixed memory leak in error case.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/GuestHost/DragAndDrop/DnDURIList.cpp

    r55805 r56184  
    5555    int rc = RTPathQueryInfo(pcszSource, &objInfo, RTFSOBJATTRADD_NOTHING);
    5656    if (RT_SUCCESS(rc))
    57     {   
     57    {
    5858        if (RTFS_IS_FILE(objInfo.Attr.fMode))
    5959        {
    6060            LogFlowFunc(("File '%s' -> '%s'\n", pcszSource, pcszTarget));
    6161
    62             m_lstTree.append(DnDURIObject(DnDURIObject::File, pcszSource, pcszTarget, 
     62            m_lstTree.append(DnDURIObject(DnDURIObject::File, pcszSource, pcszTarget,
    6363                             objInfo.Attr.fMode, (uint64_t)objInfo.cbObject));
    6464            m_cTotal++;
     
    8282}
    8383
    84 int DnDURIList::appendPathRecursive(const char *pcszSrcPath, 
     84int DnDURIList::appendPathRecursive(const char *pcszSrcPath,
    8585                                    const char *pcszDstPath, const char *pcszDstBase, size_t cchDstBase, uint32_t fFlags)
    8686{
     
    8888    AssertPtrReturn(pcszDstBase, VERR_INVALID_POINTER);
    8989    AssertPtrReturn(pcszDstPath, VERR_INVALID_POINTER);
    90    
    91     LogFlowFunc(("pcszSrcPath=%s, pcszDstPath=%s, pcszDstBase=%s, cchDstBase=%zu\n", 
     90
     91    LogFlowFunc(("pcszSrcPath=%s, pcszDstPath=%s, pcszDstBase=%s, cchDstBase=%zu\n",
    9292                 pcszSrcPath, pcszDstPath, pcszDstBase, cchDstBase));
    9393
     
    9595    int rc = RTPathQueryInfo(pcszSrcPath, &objInfo, RTFSOBJATTRADD_NOTHING);
    9696    if (RT_SUCCESS(rc))
    97     {   
     97    {
    9898        if (RTFS_IS_DIRECTORY(objInfo.Attr.fMode))
    9999        {
     
    104104                rc = RTDirOpen(&hDir, pcszSrcPath);
    105105            if (RT_SUCCESS(rc))
    106             {   
     106            {
    107107                do
    108108                {
     
    123123                            if (   RTStrCmp(DirEntry.szName, ".")  == 0
    124124                                || RTStrCmp(DirEntry.szName, "..") == 0)
    125                                 break;                           
     125                                break;
    126126
    127127                            char *pszSrc = RTPathJoinA(pcszSrcPath, DirEntry.szName);
     
    176176                                        {
    177177                                            LogFlowFunc(("Directory entry is symlink to directory\n"));
    178                                             rc = appendPathRecursive(pszSrc, pcszDstPath, pcszDstBase, cchDstBase, fFlags); 
     178                                            rc = appendPathRecursive(pszSrc, pcszDstPath, pcszDstBase, cchDstBase, fFlags);
    179179                                        }
    180180                                        else if (RTFS_IS_FILE(objInfo.Attr.fMode))
     
    188188
    189189                                    RTStrFree(pszSrc);
    190                                 }       
     190                                }
    191191                                else
    192192                                    rc = VERR_NO_MEMORY;
     
    221221                        {
    222222                            LogFlowFunc(("Symlink to directory\n"));
    223                             rc = appendPathRecursive(pszSrc, pcszDstPath, pcszDstBase, cchDstBase, fFlags); 
     223                            rc = appendPathRecursive(pszSrc, pcszDstPath, pcszDstBase, cchDstBase, fFlags);
    224224                        }
    225225                        else if (RTFS_IS_FILE(objInfo.Attr.fMode))
     
    233233
    234234                    RTStrFree(pszSrc);
    235                 }       
     235                }
    236236                else
    237                     rc = VERR_NO_MEMORY;         
     237                    rc = VERR_NO_MEMORY;
    238238            }
    239239        }
     
    468468                    RTStrFree(pszPathURI);
    469469                }
    470                 else
     470
     471                RTStrFree(pszPath);
     472
     473                if (!pszPathURI)
    471474                    break;
    472                 RTStrFree(pszPath);
    473475            }
    474476            else
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