summaryrefslogtreecommitdiff
path: root/src/VBox/Devices/Audio/DrvHostAudioWasApi.cpp
diff options
context:
space:
mode:
authorvboxsync <vboxsync@cfe28804-0f27-0410-a406-dd0f0b0b656f>2021-06-04 10:30:47 +0000
committervboxsync <vboxsync@cfe28804-0f27-0410-a406-dd0f0b0b656f>2021-06-04 10:30:47 +0000
commitfe576e46bdf0838241314d134faf7f8f3d6f1c6e (patch)
treed0c1c96d943417bc2ccec5ffeb1d9265d3b7f73c /src/VBox/Devices/Audio/DrvHostAudioWasApi.cpp
parent2e5056eb7a8664efa4c7ca82cf87df4bb6272151 (diff)
downloadVirtualBox-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.cpp23
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);
}