Signed-off-by: Huw Davies huw@codeweavers.com --- dlls/wineoss.drv/mmdevdrv.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/dlls/wineoss.drv/mmdevdrv.c b/dlls/wineoss.drv/mmdevdrv.c index 5b6addef0f7..eb0ab7b8fc7 100644 --- a/dlls/wineoss.drv/mmdevdrv.c +++ b/dlls/wineoss.drv/mmdevdrv.c @@ -121,7 +121,6 @@ struct ACImpl {
int fd; oss_audioinfo ai; - char devnode[OSS_DEVNODE_SIZE];
BOOL initted, playing; UINT64 written_frames, last_pos_frames; @@ -138,6 +137,9 @@ struct ACImpl { AudioSessionWrapper *session_wrapper;
struct list entry; + + /* Keep at end */ + char devnode[0]; };
typedef struct _SessionMgr { @@ -445,6 +447,7 @@ HRESULT WINAPI AUDDRV_GetAudioEndpoint(GUID *guid, IMMDevice *dev, ACImpl *This; const OSSDevice *oss_dev; HRESULT hr; + int len;
TRACE("%s %p %p\n", debugstr_guid(guid), dev, out);
@@ -453,8 +456,8 @@ HRESULT WINAPI AUDDRV_GetAudioEndpoint(GUID *guid, IMMDevice *dev, WARN("Unknown GUID: %s\n", debugstr_guid(guid)); return AUDCLNT_E_DEVICE_INVALIDATED; } - - This = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(ACImpl)); + len = strlen(oss_dev->devnode); + This = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, offsetof(ACImpl, devnode[len + 1])); if(!This) return E_OUTOFMEMORY;
Signed-off-by: Andrew Eikum aeikum@codeweavers.com
On Wed, Apr 06, 2022 at 07:55:52AM +0100, Huw Davies wrote:
Signed-off-by: Huw Davies huw@codeweavers.com
dlls/wineoss.drv/mmdevdrv.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/dlls/wineoss.drv/mmdevdrv.c b/dlls/wineoss.drv/mmdevdrv.c index 5b6addef0f7..eb0ab7b8fc7 100644 --- a/dlls/wineoss.drv/mmdevdrv.c +++ b/dlls/wineoss.drv/mmdevdrv.c @@ -121,7 +121,6 @@ struct ACImpl {
int fd; oss_audioinfo ai;
char devnode[OSS_DEVNODE_SIZE];
BOOL initted, playing; UINT64 written_frames, last_pos_frames;
@@ -138,6 +137,9 @@ struct ACImpl { AudioSessionWrapper *session_wrapper;
struct list entry;
- /* Keep at end */
- char devnode[0];
};
typedef struct _SessionMgr { @@ -445,6 +447,7 @@ HRESULT WINAPI AUDDRV_GetAudioEndpoint(GUID *guid, IMMDevice *dev, ACImpl *This; const OSSDevice *oss_dev; HRESULT hr;
int len;
TRACE("%s %p %p\n", debugstr_guid(guid), dev, out);
@@ -453,8 +456,8 @@ HRESULT WINAPI AUDDRV_GetAudioEndpoint(GUID *guid, IMMDevice *dev, WARN("Unknown GUID: %s\n", debugstr_guid(guid)); return AUDCLNT_E_DEVICE_INVALIDATED; }
- This = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(ACImpl));
- len = strlen(oss_dev->devnode);
- This = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, offsetof(ACImpl, devnode[len + 1])); if(!This) return E_OUTOFMEMORY;
-- 2.25.1