libxl__poller *p = LIBXL_LIST_FIRST(&ctx->pollers_idle);
if (p) {
LIBXL_LIST_REMOVE(p, entry);
- return p;
- }
-
- p = malloc(sizeof(*p));
- if (!p) {
- LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "cannot allocate poller");
- return 0;
- }
- memset(p, 0, sizeof(*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));
- 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;