From: Dmitry Kostjuchenko Date: Tue, 8 Dec 2020 06:26:54 +0000 (+0200) Subject: Fixed breaking strict-aliasing rules (if compiled with GCC with -fstrict-aliasing... X-Git-Tag: v19.7.0~90 X-Git-Url: https://andrewgundersen.net/repos?a=commitdiff_plain;h=5f35d35ad0f171dc0456d6806539df7bc67f8f1b;p=portaudio Fixed breaking strict-aliasing rules (if compiled with GCC with -fstrict-aliasing) in PaWin_InitializeWaveFormatExtensible(). (#342) --- diff --git a/src/os/win/pa_win_waveformat.c b/src/os/win/pa_win_waveformat.c index bd5addd..5c6f29d 100644 --- a/src/os/win/pa_win_waveformat.c +++ b/src/os/win/pa_win_waveformat.c @@ -98,14 +98,15 @@ void PaWin_InitializeWaveFormatExtensible( PaWinWaveFormat *waveFormat, waveFormatEx->wBitsPerSample = bytesPerSample * 8; waveFormatEx->cbSize = 22; - *((WORD*)&waveFormat->fields[PAWIN_INDEXOF_WVALIDBITSPERSAMPLE]) = - waveFormatEx->wBitsPerSample; + memcpy(&waveFormat->fields[PAWIN_INDEXOF_WVALIDBITSPERSAMPLE], + &waveFormatEx->wBitsPerSample, sizeof(WORD)); + + memcpy(&waveFormat->fields[PAWIN_INDEXOF_DWCHANNELMASK], + &channelMask, sizeof(DWORD)); - *((DWORD*)&waveFormat->fields[PAWIN_INDEXOF_DWCHANNELMASK]) = channelMask; - guid = pawin_ksDataFormatSubtypeGuidBase; guid.Data1 = (USHORT)waveFormatTag; - *((GUID*)&waveFormat->fields[PAWIN_INDEXOF_SUBFORMAT]) = guid; + memcpy(&waveFormat->fields[PAWIN_INDEXOF_SUBFORMAT], &guid, sizeof(GUID)); } PaWinWaveFormatChannelMask PaWin_DefaultChannelMask( int numChannels )