From 5c67d997948309d881ed94387309865c76ecddcb Mon Sep 17 00:00:00 2001 From: Antonin Décimo Date: Mon, 15 Jun 2020 15:46:58 +0200 Subject: common/loop: check return of realloc --- common/loop.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'common') diff --git a/common/loop.c b/common/loop.c index aecad2f3..80fe18ea 100644 --- a/common/loop.c +++ b/common/loop.c @@ -117,9 +117,15 @@ void loop_add_fd(struct loop *loop, int fd, short mask, struct pollfd pfd = {fd, mask, 0}; if (loop->fd_length == loop->fd_capacity) { - loop->fd_capacity += 10; - loop->fds = realloc(loop->fds, - sizeof(struct pollfd) * loop->fd_capacity); + int capacity = loop->fd_capacity + 10; + struct pollfd *tmp = realloc(loop->fds, + sizeof(struct pollfd) * capacity); + if (!tmp) { + sway_log(SWAY_ERROR, "Unable to allocate memory for pollfd"); + return; + } + loop->fds = tmp; + loop->fd_capacity = capacity; } loop->fds[loop->fd_length++] = pfd; -- cgit v1.2.3-54-g00ecf