Skip to content

Commit 2e31b84

Browse files
committed
fix: check for empty iter-/generators (#188)
Signed-off-by: Christopher Arndt <[email protected]>
1 parent c77fb34 commit 2e31b84

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

src/_rtmidi.pyx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1098,9 +1098,6 @@ cdef class MidiOut(MidiBase):
10981098
"""
10991099
cdef vector[unsigned char] msg_v
11001100

1101-
if not message:
1102-
raise ValueError("'message' must not be empty.")
1103-
11041101
try:
11051102
msg_v.reserve(len(message))
11061103
except TypeError:
@@ -1109,7 +1106,9 @@ cdef class MidiOut(MidiBase):
11091106
for c in message:
11101107
msg_v.push_back(c)
11111108

1112-
if msg_v.size() > 3 and msg_v.at(0) != 0xF0:
1109+
if msg_v.size() == 0:
1110+
raise ValueError("'message' must not be empty.")
1111+
elif msg_v.size() > 3 and msg_v.at(0) != 0xF0:
11131112
raise ValueError("'message' longer than 3 bytes but does not "
11141113
"start with 0xF0.")
11151114

tests/test_rtmidi.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,10 @@ def test_send_supports_iterator(self):
8686
def test_send_raises_if_message_too_long(self):
8787
self.assertRaises(ValueError, self.midi_out.send_message, [1, 2, 3, 4])
8888

89+
def test_send_raises_if_message_empty(self):
90+
self.assertRaises(ValueError, self.midi_out.send_message, [])
91+
self.assertRaises(ValueError, self.midi_out.send_message, iter([]))
92+
8993
def test_send_accepts_sysex(self):
9094
self.set_up_loopback()
9195
self.midi_in.ignore_types(sysex=False)

0 commit comments

Comments
 (0)