diff options
Diffstat (limited to 'src/VBox/Runtime/r3/os2/rtProcInitExePath-os2.cpp')
-rw-r--r-- | src/VBox/Runtime/r3/os2/rtProcInitExePath-os2.cpp | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/src/VBox/Runtime/r3/os2/rtProcInitExePath-os2.cpp b/src/VBox/Runtime/r3/os2/rtProcInitExePath-os2.cpp index 95c4e9b26..a991619e7 100644 --- a/src/VBox/Runtime/r3/os2/rtProcInitExePath-os2.cpp +++ b/src/VBox/Runtime/r3/os2/rtProcInitExePath-os2.cpp @@ -1,4 +1,4 @@ -/* $Id: rtProcInitExePath-os2.cpp 28800 2010-04-27 08:22:32Z vboxsync $ */ +/* $Id: rtProcInitExePath-os2.cpp 28929 2010-04-30 11:26:46Z vboxsync $ */ /** @file * IPRT - rtProcInitName, OS/2. */ @@ -47,16 +47,14 @@ DECLHIDDEN(int) rtProcInitExePath(char *pszPath, size_t cchPath) */ _execname(pszPath, cchPath); - char *pszTmp; - int rc = rtPathFromNative(&pszTmp, pszPath); - AssertMsgRCReturn(rc, ("rc=%Rrc pszLink=\"%s\"\nhex: %.*Rhsx\n", rc, pszPath, cchPath, pszPath), rc); - - size_t cch = strlen(pszTmp); - AssertReturn(cch <= cchPath, VERR_BUFFER_OVERFLOW); - - memcpy(pszPath, pszTmp, cch + 1); - RTStrFree(pszTmp); - - return VINF_SUCCESS; + char const *pszTmp; + int rc = rtPathFromNative(&pszTmp, pszPath, NULL); + AssertMsgRCReturn(rc, ("rc=%Rrc pszLink=\"%s\"\nhex: %.*Rhxs\n", rc, pszPath, cchPath, pszPath), rc); + if (pszTmp != pszPath) + { + rc = RTStrCopy(pszPath, cchPath, pszTmp); + rtPathFreeIprt(pszTmp, pszPath); + } + return rc; } |