From 37df81b788ebe700930bbaae90fc720b6dd2f314 Mon Sep 17 00:00:00 2001 From: Andreas Hartmetz Date: Thu, 12 Apr 2018 21:25:45 +0200 Subject: GLib event dispatcher: fix iteration in source check in error case It was accessing the deleted current element in a potentially reallocated container. Change-Id: I81d86410907b7b0c20c2edc62ad256315606bc96 Reviewed-by: Andreas Hartmetz Reviewed-by: David Faure Reviewed-by: Thiago Macieira --- src/corelib/kernel/qeventdispatcher_glib.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/corelib/kernel/qeventdispatcher_glib.cpp') diff --git a/src/corelib/kernel/qeventdispatcher_glib.cpp b/src/corelib/kernel/qeventdispatcher_glib.cpp index 4c780a9294..60b4be81b1 100644 --- a/src/corelib/kernel/qeventdispatcher_glib.cpp +++ b/src/corelib/kernel/qeventdispatcher_glib.cpp @@ -86,9 +86,10 @@ static gboolean socketNotifierSourceCheck(GSource *source) p->pollfd.fd, t[int(p->socketNotifier->type())]); // ### note, modifies src->pollfds! p->socketNotifier->setEnabled(false); + i--; + } else { + pending = ((p->pollfd.revents & p->pollfd.events) != 0); } - - pending = ((p->pollfd.revents & p->pollfd.events) != 0); } return pending; -- cgit v1.2.3