If we fail to initialize pollers due to fdtab/fdinfo/polled_mask
not getting allocated, we free any of those that were allocated
and exit. However the ordering was incorrect, and there was an old
unused and unreachable "fail_cache" path as well.
---
src/fd.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/src/fd.c b/src/fd.c
index 84cb9080..daebe783 100644
--- a/src/fd.c
+++ b/src/fd.c
@@ -525,7 +525,6 @@ int init_pollers()
if ((fdtab = calloc(global.maxsock, sizeof(struct fdtab))) == NULL)
goto fail_tab;
-
if ((polled_mask = calloc(global.maxsock, sizeof(unsigned long))) ==
NULL)
goto fail_polledmask;
if ((fdinfo = calloc(global.maxsock, sizeof(struct fdinfo))) == NULL)
@@ -559,13 +558,11 @@ int init_pollers()
} while (!bp || bp->pref == 0);
return 0;
- fail_cache:
- free(fdinfo);
fail_info:
- free(fdtab);
- fail_tab:
free(polled_mask);
fail_polledmask:
+ free(fdtab);
+ fail_tab:
return 0;
}
--
2.20.1