[PATCH 2/8] wineoss: Dynamically size the devnode array.

Andrew Eikum aeikum at codeweavers.com
Mon Apr 11 08:59:28 CDT 2022


Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>

On Wed, Apr 06, 2022 at 07:55:52AM +0100, Huw Davies wrote:
> Signed-off-by: Huw Davies <huw at 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
> 
> 



More information about the wine-devel mailing list