VirtualBox

Ignore:
Timestamp:
Apr 29, 2010 6:12:35 PM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
60863
Message:

iprt: More path conversion avoidance.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/r3/freebsd/rtProcInitExePath-freebsd.cpp

    r28800 r28915  
    5656    if (sysctl(aiName, RT_ELEMENTS(aiName), pszPath, &cchExePath, NULL, 0) == 0)
    5757    {
    58 
    59         char *pszTmp = NULL;
    60         int rc = rtPathFromNative(&pszTmp, pszPath);
     58        const char *pszTmp;
     59        int rc = rtPathFromNative(&pszTmp, pszPath, NULL);
    6160        AssertMsgRCReturn(rc, ("rc=%Rrc pszPath=\"%s\"\nhex: %.*Rhsx\n", rc, pszPath, cchExePath, pszPath), rc);
    62 
    63         size_t cch = strlen(pszTmp);
    64         AssertReturn(cch <= cchPath, VERR_BUFFER_OVERFLOW);
    65 
    66         memcpy(pszPath, pszTmp, cch + 1);
    67         RTStrFree(pszTmp);
    68 
    69         return VINF_SUCCESS;
     61        if (pszTmp != pszPath)
     62        {
     63            rc = RTStrCopy(pszPath, cchPath, pszTmp);
     64            rtPathFreeIprt(pszTmp, pszPath);
     65        }
     66        return rc;
    7067    }
    7168
     
    8481        pszPath[cchLink] = '\0';
    8582
    86         char *pszTmp = NULL;
     83        char const *pszTmp;
    8784        int rc = rtPathFromNative(&pszTmp, pszPath);
    8885        AssertMsgRCReturn(rc, ("rc=%Rrc pszLink=\"%s\"\nhex: %.*Rhsx\n", rc, pszPath, cchLink, pszPath), rc);
    89 
    90         size_t cch = strlen(pszTmp);
    91         AssertReturn(cch <= cchPath, VERR_BUFFER_OVERFLOW);
    92 
    93         memcpy(pszPath, pszTmp, cch + 1);
    94         RTStrFree(pszTmp);
    95 
    96         return VINF_SUCCESS;
     86        if (pszTmp != pszPath)
     87        {
     88            rc = RTStrCopy(pszPath, cchPath, pszTmp);
     89            rtPathFreeIprt(pszTmp);
     90        }
     91        return rc;
    9792    }
    9893
     
    111106            if (*pszImageName == '/') /* this may not always be absolute, despite the docs. :-( */
    112107            {
    113                 char *pszTmp = NULL;
    114                 int rc = rtPathFromNative(&pszTmp, pszImageName);
     108                char const *pszTmp;
     109                int rc = rtPathFromNative(&pszTmp, pszImageName, NULL);
    115110                AssertMsgRCReturn(rc, ("rc=%Rrc pszImageName=\"%s\"\n", rc, pszImageName), rc);
    116 
    117                 size_t cch = strlen(pszTmp);
    118                 AssertReturn(cch <= cchPath, VERR_BUFFER_OVERFLOW);
    119 
    120                 memcpy(pszPath, pszTmp, cch + 1);
    121                 RTStrFree(pszTmp);
    122 
    123                 return VINF_SUCCESS;
     111                if (pszTmp != pszPath)
     112                {
     113                    rc = RTStrCopy(pszPath, cchPath, pszTmp);
     114                    rtPathFreeIprt(pszTmp, pszPath);
     115                }
     116                return rc;
    124117            }
    125118            /** @todo Try search the PATH for the file name or append the current
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