mirror of https://github.com/getdnsapi/getdns.git
Copy event pointer out of event hash table before callbacks, because it might be deleted
This commit is contained in:
parent
5e26137eda
commit
7ebf3924b5
|
@ -304,17 +304,16 @@ default_eventloop_run_once(getdns_eventloop *loop, int blocking)
|
||||||
for (i = 0; i < num_pfds; i++) {
|
for (i = 0; i < num_pfds; i++) {
|
||||||
int fd = pfds[i].fd;
|
int fd = pfds[i].fd;
|
||||||
_getdns_eventloop_info* fd_event = find_event(&default_loop->fd_events, fd);
|
_getdns_eventloop_info* fd_event = find_event(&default_loop->fd_events, fd);
|
||||||
if (fd_event &&
|
if (fd_event && fd_event->event) {
|
||||||
fd_event->event &&
|
getdns_eventloop_event* event = fd_event->event;
|
||||||
fd_event->event->read_cb &&
|
if (event->read_cb &&
|
||||||
(pfds[i].revents & POLLIN))
|
(pfds[i].revents & POLLIN))
|
||||||
default_read_cb(fd, fd_event->event);
|
default_read_cb(fd, event);
|
||||||
|
|
||||||
if (fd_event &&
|
if (event->write_cb &&
|
||||||
fd_event->event &&
|
(pfds[i].revents & POLLOUT))
|
||||||
fd_event->event->write_cb &&
|
default_write_cb(fd, event);
|
||||||
(pfds[i].revents & POLLOUT))
|
}
|
||||||
default_write_cb(fd, fd_event->event);
|
|
||||||
}
|
}
|
||||||
if (pfds)
|
if (pfds)
|
||||||
free(pfds);
|
free(pfds);
|
||||||
|
|
Loading…
Reference in New Issue