]> git.alsa-project.org Git - alsa-lib.git/commitdiff
seq_midi_event: prevent running status after system messages
authorClemens Ladisch <clemens@ladisch.de>
Fri, 10 Aug 2007 07:39:24 +0000 (09:39 +0200)
committerClemens Ladisch <clemens@ladisch.de>
Fri, 10 Aug 2007 07:39:24 +0000 (09:39 +0200)
Reset the event type after encoding a system message to prevent any
following data bytes from being interpreted as data for a running status
system message, which is not allowed in MIDI.

src/seq/seq_midi_event.c

index 4fa914b066b4b8630ee49b46d2832bf088932a43..def9d0e121c9d66e5f6bff09053dc0c0ba62cf33 100644 (file)
@@ -338,6 +338,8 @@ int snd_midi_event_encode_byte(snd_midi_event_t *dev, int c, snd_seq_event_t *ev
                ev->flags |= SND_SEQ_EVENT_LENGTH_FIXED;
                if (status_event[dev->type].encode) /* set data values */
                        status_event[dev->type].encode(dev, ev);
+               if (dev->type >= ST_SPECIAL)
+                       dev->type = ST_INVALID;
                rc = 1;
        } else  if (dev->type == ST_SYSEX) {
                if (c == MIDI_CMD_COMMON_SYSEX_END ||