commit 5c67d997948309d881ed94387309865c76ecddcb
parent bbf7b92fe4b34288dbe7c58827a1f69428ffb263
Author: Antonin Décimo <antonin.decimo@gmail.com>
Date: Mon, 15 Jun 2020 15:46:58 +0200
common/loop: check return of realloc
Diffstat:
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git 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;