]> git.alsa-project.org Git - alsa-gobject.git/commitdiff
rawmidi: fix wrong handling of open flag
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Tue, 19 Apr 2022 09:41:08 +0000 (18:41 +0900)
committer坂本 貴史 <o-takashi@sakamocchi.jp>
Wed, 20 Apr 2022 00:51:44 +0000 (09:51 +0900)
ALSARawmidi.StreamPair.open() has open_flag parameter for flags parameter of
open(2) system call, however internally it's not handled correctly.

This commit fixes the bug.

Fixes: 909ff54d5265 ("rawmidi: stream_pair: add APIs to open ALSA Rawmidi character device")
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
src/rawmidi/stream-pair.c

index c2ca684d50303a58b09515da5aeff40824d31c9f..517d99fc0f9ffe761bae0040168c11345f2ece1e 100644 (file)
@@ -217,13 +217,14 @@ void alsarawmidi_stream_pair_open(ALSARawmidiStreamPair *self, guint card_id,
                      ALSARAWMIDI_STREAM_PAIR_INFO_FLAG_INPUT)) == 0);
     g_return_if_fail(error == NULL || *error == NULL);
 
+    open_flag &= ~(O_RDWR | O_WRONLY | O_RDONLY);
     if ((access_modes & ALSARAWMIDI_STREAM_PAIR_INFO_FLAG_OUTPUT) &&
         (access_modes & ALSARAWMIDI_STREAM_PAIR_INFO_FLAG_INPUT))
-        open_flag = O_RDWR;
+        open_flag |= O_RDWR;
     else if (access_modes & ALSARAWMIDI_STREAM_PAIR_INFO_FLAG_OUTPUT)
-        open_flag = O_WRONLY;
+        open_flag |= O_WRONLY;
     else if (access_modes & ALSARAWMIDI_STREAM_PAIR_INFO_FLAG_INPUT)
-        open_flag = O_RDONLY;
+        open_flag |= O_RDONLY;
     else
         g_return_if_reached();