]> Repos - portaudio/commitdiff
Fixed breaking strict-aliasing rules (if compiled with GCC with -fstrict-aliasing...
authorDmitry Kostjuchenko <dmitrykos@neutroncode.com>
Tue, 8 Dec 2020 06:26:54 +0000 (08:26 +0200)
committerGitHub <noreply@github.com>
Tue, 8 Dec 2020 06:26:54 +0000 (17:26 +1100)
src/os/win/pa_win_waveformat.c

index bd5addd407db9d85230e6a22efa8b23b6a199810..5c6f29dd88d54fd809f2d366da76f019d8f436f3 100644 (file)
@@ -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 )