summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2017-03-05 13:51:22 +0100
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2017-03-05 13:51:22 +0100
commitfe866d996f54df0c5687c94b98abff5410ef02c9 (patch)
tree38150f83048eeb1a8b8acb983a1b75cb11fcc137
parent3ab6aa3a6d0506e805caa19369bef279c1c789b4 (diff)
downloadmicropython-fe866d996f54df0c5687c94b98abff5410ef02c9.tar.gz
micropython-fe866d996f54df0c5687c94b98abff5410ef02c9.zip
unix/moduselect: Properly implement ipoll object iteration.
TODO: There's another issue to care about: poll set being modified during iteration.
-rw-r--r--unix/moduselect.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/unix/moduselect.c b/unix/moduselect.c
index 76938329fc..37a3a33b28 100644
--- a/unix/moduselect.c
+++ b/unix/moduselect.c
@@ -253,8 +253,9 @@ STATIC mp_obj_t poll_iternext(mp_obj_t self_in) {
self->iter_cnt--;
- struct pollfd *entries = self->entries;
+ struct pollfd *entries = self->entries + self->iter_idx;
for (int i = self->iter_idx; i < self->len; i++, entries++) {
+ self->iter_idx++;
if (entries->revents != 0) {
mp_obj_tuple_t *t = MP_OBJ_TO_PTR(self->ret_tuple);
// If there's an object stored, return it, otherwise raw fd