mirror of
https://github.com/cuberite/libevent.git
synced 2025-09-14 14:54:49 -04:00
Fix use-after-free error in EV_CLOSURE_EVENT callback
This commit is contained in:
parent
35f107de92
commit
3cc0eace2e
3
event.c
3
event.c
@ -1569,8 +1569,9 @@ event_process_active_single_queue(struct event_base *base,
|
|||||||
event_persist_closure(base, ev);
|
event_persist_closure(base, ev);
|
||||||
break;
|
break;
|
||||||
case EV_CLOSURE_EVENT: {
|
case EV_CLOSURE_EVENT: {
|
||||||
void (*evcb_callback)(evutil_socket_t, short, void *) = *ev->ev_callback;
|
void (*evcb_callback)(evutil_socket_t, short, void *);
|
||||||
EVUTIL_ASSERT(ev != NULL);
|
EVUTIL_ASSERT(ev != NULL);
|
||||||
|
evcb_callback = *ev->ev_callback;
|
||||||
EVBASE_RELEASE_LOCK(base, th_base_lock);
|
EVBASE_RELEASE_LOCK(base, th_base_lock);
|
||||||
evcb_callback(ev->ev_fd, ev->ev_res, ev->ev_arg);
|
evcb_callback(ev->ev_fd, ev->ev_res, ev->ev_arg);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user