diff options
author | vboxsync <vboxsync@cfe28804-0f27-0410-a406-dd0f0b0b656f> | 2021-06-04 10:30:47 +0000 |
---|---|---|
committer | vboxsync <vboxsync@cfe28804-0f27-0410-a406-dd0f0b0b656f> | 2021-06-04 10:30:47 +0000 |
commit | fe576e46bdf0838241314d134faf7f8f3d6f1c6e (patch) | |
tree | d0c1c96d943417bc2ccec5ffeb1d9265d3b7f73c /src/VBox/Devices/Audio/DrvHostAudioWasApi.cpp | |
parent | 2e5056eb7a8664efa4c7ca82cf87df4bb6272151 (diff) | |
download | VirtualBox-svn-fe576e46bdf0838241314d134faf7f8f3d6f1c6e.tar.gz |
Audio: Changed PDMAUDIOHOSTDEV::szName into a pszName so we don't have to truncate anything. Made PDMAudioHostDevAlloc capable of allocating both pszName and pszId as part of the device allocation. bugref:9890
git-svn-id: https://www.virtualbox.org/svn/vbox/trunk@89500 cfe28804-0f27-0410-a406-dd0f0b0b656f
Diffstat (limited to 'src/VBox/Devices/Audio/DrvHostAudioWasApi.cpp')
-rw-r--r-- | src/VBox/Devices/Audio/DrvHostAudioWasApi.cpp | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/src/VBox/Devices/Audio/DrvHostAudioWasApi.cpp b/src/VBox/Devices/Audio/DrvHostAudioWasApi.cpp index e3cb5fd1577..3da98ac47b8 100644 --- a/src/VBox/Devices/Audio/DrvHostAudioWasApi.cpp +++ b/src/VBox/Devices/Audio/DrvHostAudioWasApi.cpp @@ -1524,10 +1524,12 @@ static int drvHostWasEnumAddDev(PPDMAUDIOHOSTENUM pDevEnm, IMMDevice *pIDevice, /* * Create a enumeration entry for it. */ - size_t const cbDev = RT_ALIGN_Z( RT_OFFSETOF(DRVHOSTAUDIOWASDEV, wszDevId) - + (cwcDevId + 1) * sizeof(RTUTF16), - 64); - PDRVHOSTAUDIOWASDEV pDev = (PDRVHOSTAUDIOWASDEV)PDMAudioHostDevAlloc(cbDev); + size_t const cbId = RTUtf16CalcUtf8Len(pwszDevId) + 1; + size_t const cbName = RTUtf16CalcUtf8Len(VarName.pwszVal) + 1; + size_t const cbDev = RT_ALIGN_Z( RT_OFFSETOF(DRVHOSTAUDIOWASDEV, wszDevId) + + (cwcDevId + 1) * sizeof(RTUTF16), + 64); + PDRVHOSTAUDIOWASDEV pDev = (PDRVHOSTAUDIOWASDEV)PDMAudioHostDevAlloc(cbDev, cbName, cbId); if (pDev) { pDev->Core.enmType = PDMAUDIODEVICETYPE_BUILTIN; @@ -1542,19 +1544,14 @@ static int drvHostWasEnumAddDev(PPDMAUDIOHOSTENUM pDevEnm, IMMDevice *pIDevice, memcpy(pDev->wszDevId, pwszDevId, cwcDevId * sizeof(RTUTF16)); pDev->wszDevId[cwcDevId] = '\0'; - char *pszName; - rc = RTUtf16ToUtf8(VarName.pwszVal, &pszName); + Assert(pDev->Core.pszName); + rc = RTUtf16ToUtf8Ex(VarName.pwszVal, RTSTR_MAX, &pDev->Core.pszName, cbName, NULL); if (RT_SUCCESS(rc)) { - RTStrCopy(pDev->Core.szName, sizeof(pDev->Core.szName), pszName); - RTStrFree(pszName); - - rc = RTUtf16ToUtf8(pDev->wszDevId, &pDev->Core.pszId); + Assert(pDev->Core.pszId); + rc = RTUtf16ToUtf8Ex(pDev->wszDevId, RTSTR_MAX, &pDev->Core.pszId, cbId, NULL); if (RT_SUCCESS(rc)) - { - pDev->Core.fFlags |= PDMAUDIOHOSTDEV_F_ID_ALLOC; PDMAudioHostEnumAppend(pDevEnm, &pDev->Core); - } else PDMAudioHostDevFree(&pDev->Core); } |