diff --git a/src/flingfd.c b/src/flingfd.c index 2adcda4..e61aca3 100644 --- a/src/flingfd.c +++ b/src/flingfd.c @@ -72,27 +72,27 @@ flingfd_t *flingfd_open(const char *path) { goto error; handle = (flingfd_t *)malloc(sizeof(flingfd_t)); - if (!handle) - goto error; - - handle->fd = fd; - handle->path = path_copy; - handle->is_bound = false; + if (!handle) { + int errsv = errno; - return handle; + if (fd != -1) + close(fd); -error:; - int errsv = errno; + free(path_copy); + free(handle); - if (fd != -1) - close(fd); + errno = errsv; - free(path_copy); - free(handle); + return NULL; + } + else { - errno = errsv; + handle->fd = fd; + handle->path = path_copy; + handle->is_bound = false; - return NULL; + return handle; + } } int flingfd_send(flingfd_t *handle, int fd) {