Browse Source

Fix size of memcpy in SDL_AudioDeviceFormatChangedAlreadyLocked
And add diagnostic that allows to find this kind of issue in clang-tidy

Mathieu Eyraud 1 year ago
parent
commit
778e8185cd
2 changed files with 2 additions and 1 deletions
  1. 1 0
      .clang-tidy
  2. 1 1
      src/audio/SDL_audio.c

+ 1 - 0
.clang-tidy

@@ -25,6 +25,7 @@ Checks: >
   clang-analyzer-core.*,
   clang-analyzer-valist.*,
   clang-analyzer-unix.Malloc,
+  clang-diagnostic-*,
   google-readability-casting,
   misc-misleading-bidirectional,
   misc-misleading-identifier,

+ 1 - 1
src/audio/SDL_audio.c

@@ -1681,7 +1681,7 @@ int SDL_AudioDeviceFormatChangedAlreadyLocked(SDL_AudioDevice *device, const SDL
     const SDL_bool iscapture = device->iscapture;
 
     if ((device->spec.format != newspec->format) || (device->spec.channels != newspec->channels) || (device->spec.freq != newspec->freq)) {
-        SDL_memcpy(&device->spec, newspec, sizeof (newspec));
+        SDL_memcpy(&device->spec, newspec, sizeof (*newspec));
         for (SDL_LogicalAudioDevice *logdev = device->logical_devices; !kill_device && (logdev != NULL); logdev = logdev->next) {
             for (SDL_AudioStream *stream = logdev->bound_streams; !kill_device && (stream != NULL); stream = stream->next_binding) {
                 if (SDL_SetAudioStreamFormat(stream, iscapture ? &device->spec : NULL, iscapture ? NULL : &device->spec) == -1) {