From: Consus Date: Thu, 20 Oct 2016 13:08:49 +0000 (+0300) Subject: Do not close stdout on fuse_session_destroy() X-Git-Tag: fuse-3.0.0rc1~24 X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=7c01d75a89051997ee620f2c2eeaf77b00824a5d;p=qemu-gpiodev%2Flibfuse.git Do not close stdout on fuse_session_destroy() If fuse_session_mount() fails (or was never called in the first place) we end up with the default fd value which happens to be 0. It hurts long-running processes, which lifetime extends beyond session's lifetime. --- diff --git a/lib/fuse_lowlevel.c b/lib/fuse_lowlevel.c index 1dbe6ed..8889d2d 100644 --- a/lib/fuse_lowlevel.c +++ b/lib/fuse_lowlevel.c @@ -2559,7 +2559,8 @@ void fuse_session_destroy(struct fuse_session *se) pthread_key_delete(se->pipe_key); pthread_mutex_destroy(&se->lock); free(se->cuse_data); - close(se->fd); + if (se->fd != -1) + close(se->fd); destroy_mount_opts(se->mo); free(se); } @@ -2743,6 +2744,7 @@ struct fuse_session *fuse_session_new(struct fuse_args *args, fprintf(stderr, "fuse: failed to allocate fuse object\n"); goto out1; } + se->fd = -1; se->conn.max_write = UINT_MAX; se->conn.max_readahead = UINT_MAX;