diff --git a/bin/varnishd/waiter/cache_waiter_epoll.c b/bin/varnishd/waiter/cache_waiter_epoll.c index 9e2e2a3..3b0105a 100644 --- a/bin/varnishd/waiter/cache_waiter_epoll.c +++ b/bin/varnishd/waiter/cache_waiter_epoll.c @@ -38,6 +38,7 @@ #include #include +#include #include "cache/cache_varnishd.h" @@ -69,7 +70,7 @@ struct vwe { static void * vwe_thread(void *priv) { - struct epoll_event ev[NEEV], *ep; + struct epoll_event *ev, *ep; struct waited *wp; struct waiter *w; double now, then; @@ -82,6 +83,8 @@ vwe_thread(void *priv) CHECK_OBJ_NOTNULL(w, WAITER_MAGIC); THR_SetName("cache-epoll"); THR_Init(); + ev = malloc(sizeof(struct epoll_event) * NEEV); + AN(ev); now = VTIM_real(); while (1) { @@ -146,6 +149,7 @@ vwe_thread(void *priv) if (vwe->nwaited == 0 && vwe->die) break; } + free(ev); closefd(&vwe->pipe[0]); closefd(&vwe->pipe[1]); closefd(&vwe->epfd);