diff --git a/tools/libxl/libxl_event.c b/tools/libxl/libxl_event.c index 5f539b122c..9536018efe 100644 --- a/tools/libxl/libxl_event.c +++ b/tools/libxl/libxl_event.c @@ -1329,20 +1329,19 @@ libxl__poller *libxl__poller_get(libxl_ctx *ctx) libxl__poller *p = LIBXL_LIST_FIRST(&ctx->pollers_idle); if (p) { LIBXL_LIST_REMOVE(p, entry); - return p; - } + } else { + p = malloc(sizeof(*p)); + if (!p) { + LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "cannot allocate poller"); + return 0; + } + memset(p, 0, sizeof(*p)); - p = malloc(sizeof(*p)); - if (!p) { - LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "cannot allocate poller"); - return 0; - } - memset(p, 0, sizeof(*p)); - - rc = libxl__poller_init(ctx, p); - if (rc) { - free(p); - return NULL; + rc = libxl__poller_init(ctx, p); + if (rc) { + free(p); + return NULL; + } } return p;