extmod/asyncio/event.py: Fix ThreadSafeFlag.ioctl return.
iobase_ioctl expects that an ioctl method must return an integer, and will raise otherwise. This was tripping up aioble on Unix, where the new hybrid modselect.c implementation will attempt to extract a file descriptor from the pollable via ioctl(MP_STREAM_GET_FILENO). However, ThreadSafeFlag's ioctl only supported MP_STREAM_POLL, and returned None otherwise. This makes it return `-1` (to match tests/extmod/select_poll_custom.py). It should probably be `-22` (corresponding to MP_EINVAL), but the value is never checked, and MP_EINVAL can be a different value on different ports. This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
This commit is contained in:
parent
c854d0e3e1
commit
cfe6a11e39
@ -49,7 +49,7 @@ try:
|
|||||||
def ioctl(self, req, flags):
|
def ioctl(self, req, flags):
|
||||||
if req == 3: # MP_STREAM_POLL
|
if req == 3: # MP_STREAM_POLL
|
||||||
return self.state * flags
|
return self.state * flags
|
||||||
return None
|
return -1 # Other requests are unsupported
|
||||||
|
|
||||||
def set(self):
|
def set(self):
|
||||||
self.state = 1
|
self.state = 1
|
||||||
|
Loading…
Reference in New Issue
Block a user