瀏覽代碼

netbsdaudio: Handle ioctls failing

A user reported that the mpv video player hangs after attempting to
set an unsupported number of channels with the SDL audio output,
because it thinks it's successfully opened the device. This makes
the failure graceful.
nia 5 年之前
父節點
當前提交
a5f3ea1448
共有 1 個文件被更改,包括 6 次插入2 次删除
  1. 6 2
      src/audio/netbsd/SDL_netbsdaudio.c

+ 6 - 2
src/audio/netbsd/SDL_netbsdaudio.c

@@ -295,9 +295,13 @@ NETBSDAUDIO_OpenDevice(_THIS, void *handle, const char *devname, int iscapture)
 
     info.hiwat = 5;
     info.lowat = 3;
-    (void) ioctl(this->hidden->audio_fd, AUDIO_SETINFO, &info);
+    if (ioctl(this->hidden->audio_fd, AUDIO_SETINFO, &info) < 0) {
+        return SDL_SetError("AUDIO_SETINFO failed for %s: %s", devname, strerror(errno));
+    }
 
-    (void) ioctl(this->hidden->audio_fd, AUDIO_GETINFO, &info);
+    if (ioctl(this->hidden->audio_fd, AUDIO_GETINFO, &info) < 0) {
+        return SDL_SetError("AUDIO_GETINFO failed for %s: %s", devname, strerror(errno));
+    }
 
     /* Final spec used for the device. */
     this->spec.format = format;