diff --git a/daemon/poller.c b/daemon/poller.c index f9a32d2d2..9d8e29e80 100644 --- a/daemon/poller.c +++ b/daemon/poller.c @@ -8,6 +8,7 @@ #include #include #include +#include #include "poller.h" #include "aux.h" @@ -77,7 +78,7 @@ int poller_add_item(struct poller *p, struct poller_item *i) { memset(p->items + u, 0, sizeof(*p->items) * (p->items_size - u - 1)); } - ip = malloc(sizeof(*ip)); + ip = g_slice_alloc(sizeof(*ip)); memcpy(ip, i, sizeof(*ip)); p->items[i->fd] = ip; @@ -96,7 +97,7 @@ int poller_del_item(struct poller *p, int fd) { if (epoll_ctl(p->fd, EPOLL_CTL_DEL, fd, NULL)) abort(); - free(p->items[fd]); + g_slice_free1(sizeof(**p->items), p->items[fd]); p->items[fd] = NULL; return 0; @@ -265,8 +266,7 @@ int poller_timer(struct poller *p, void (*f)(void *), void *ptr) { if (!p || !f) return -1; - i = malloc(sizeof(*i)); - ZERO(*i); + i = g_slice_alloc0(sizeof(*i)); i->func = f; i->ptr = ptr;