diff options
author | Pete Batard <pbatard@gmail.com> | 2010-07-29 19:55:45 +0100 |
---|---|---|
committer | Pete Batard <pbatard@gmail.com> | 2010-07-29 20:08:12 +0100 |
commit | 48e189898075c26438bcf6782323c5525abc19bd (patch) | |
tree | d474d670bd0284b7c40378df8bf15fa771239009 /libusb/io.c | |
parent | 84d996b482177c70c11070f6317174bdfd407e80 (diff) | |
download | libusb-48e189898075c26438bcf6782323c5525abc19bd.tar.gz |
fixed residuals from official for core files
Diffstat (limited to 'libusb/io.c')
-rw-r--r-- | libusb/io.c | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/libusb/io.c b/libusb/io.c index 8d94400..c9b0ba4 100644 --- a/libusb/io.c +++ b/libusb/io.c @@ -1002,7 +1002,7 @@ printf("completed!\n"); int usbi_io_init(struct libusb_context *ctx) { - int p, r; + int r; usbi_mutex_init(&ctx->flying_transfers_lock, NULL); usbi_mutex_init(&ctx->pollfds_lock, NULL); @@ -1014,15 +1014,15 @@ int usbi_io_init(struct libusb_context *ctx) list_init(&ctx->pollfds); /* FIXME should use an eventfd on kernels that support it */ - p = usbi_pipe(ctx->ctrl_pipe); - if (p < 0) { + r = usbi_pipe(ctx->ctrl_pipe); + if (r < 0) { r = LIBUSB_ERROR_OTHER; goto err; } r = usbi_add_pollfd(ctx, ctx->ctrl_pipe[0], POLLIN); if (r < 0) - goto err; + goto err_close_pipe; #ifdef USBI_TIMERFD_AVAILABLE ctx->timerfd = timerfd_create(usbi_backend->get_timerfd_clockid(), @@ -1030,8 +1030,11 @@ int usbi_io_init(struct libusb_context *ctx) if (ctx->timerfd >= 0) { usbi_dbg("using timerfd for timeouts"); r = usbi_add_pollfd(ctx, ctx->timerfd, POLLIN); - if (r < 0) - goto err; + if (r < 0) { + usbi_remove_pollfd(ctx, ctx->ctrl_pipe[0]); + close(ctx->timerfd); + goto err_close_pipe; + } } else { usbi_dbg("timerfd not available (code %d error %d)", ctx->timerfd, errno); ctx->timerfd = -1; @@ -1040,16 +1043,10 @@ int usbi_io_init(struct libusb_context *ctx) return 0; +err_close_pipe: + usbi_close(ctx->ctrl_pipe[0]); + usbi_close(ctx->ctrl_pipe[1]); err: -#ifdef USBI_TIMERFD_AVAILABLE - if (ctx->timerfd != -1) - close(ctx->timerfd); -#endif - if (0 == p) { - usbi_remove_pollfd(ctx, ctx->ctrl_pipe[0]); - usbi_close(ctx->ctrl_pipe[0]); - usbi_close(ctx->ctrl_pipe[1]); - } usbi_mutex_destroy(&ctx->flying_transfers_lock); usbi_mutex_destroy(&ctx->pollfds_lock); usbi_mutex_destroy(&ctx->pollfd_modify_lock); |