eloop: fix registering post-cb hooks

We actually have to register the hook-helper before we can add any hooks.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This commit is contained in:
David Herrmann 2012-09-09 17:36:14 +02:00
parent 2f6b6a3d07
commit 962dfd8bea

View File

@ -605,11 +605,15 @@ int ev_eloop_new(struct ev_eloop **out, ev_log_t log)
if (ret)
goto err_fds;
ret = kmscon_hook_new(&loop->posts);
if (ret)
goto err_idlers;
loop->efd = epoll_create1(EPOLL_CLOEXEC);
if (loop->efd < 0) {
ret = -errno;
llog_error(loop, "cannot create epoll-fd");
goto err_idlers;
goto err_posts;
}
ret = ev_fd_new(&loop->fd, loop->efd, EV_READABLE, eloop_event, loop,
@ -646,6 +650,8 @@ err_fd:
ev_fd_unref(loop->fd);
err_close:
close(loop->efd);
err_posts:
kmscon_hook_free(loop->posts);
err_idlers:
kmscon_hook_free(loop->idlers);
err_fds:
@ -707,6 +713,7 @@ void ev_eloop_unref(struct ev_eloop *loop)
ev_fd_unref(loop->fd);
close(loop->efd);
kmscon_hook_free(loop->posts);
kmscon_hook_free(loop->idlers);
free(loop->cur_fds);
free(loop);