@@ -79,7 +79,8 @@ class MIDIService(Service):
7979
8080 def __init__ (self , ** kwargs ):
8181 super ().__init__ (** kwargs )
82- self ._in_buffer = bytearray (self ._raw .packet_size )
82+ # Defer creating _in_buffer until we're definitely connected.
83+ self ._in_buffer = None
8384 self ._out_buffer = None
8485 shared_buffer = memoryview (bytearray (4 ))
8586 self ._buffers = [
@@ -102,6 +103,8 @@ def readinto(self, buf, length):
102103 """Reads up to ``length`` bytes into ``buf`` starting at index 0.
103104
104105 Returns the number of bytes written into ``buf``."""
106+ if self ._in_buffer is None :
107+ self ._in_buffer = bytearray (self ._raw .packet_size )
105108 i = 0
106109 while i < length :
107110 if self ._in_index < self ._in_length :
@@ -119,8 +122,6 @@ def readinto(self, buf, length):
119122 buf [i ] = byte
120123 i += 1
121124 else :
122- if len (self ._in_buffer ) < self ._raw .packet_size :
123- self ._in_buffer = bytearray (self ._raw .packet_size )
124125 self ._in_length = self ._raw .readinto (self ._in_buffer )
125126 if self ._in_length == 0 :
126127 break
@@ -168,7 +169,7 @@ def write(self, buf, length):
168169 if self ._message_target_length :
169170 self ._pending_realtime = b
170171 else :
171- self ._raw .write (b , self ._header )
172+ self ._raw .write (b , header = self ._header )
172173 else :
173174 if (
174175 0x80 <= data <= 0xBF or 0xE0 <= data <= 0xEF or data == 0xF2
0 commit comments