aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorGravatar Consus <consus@gmx.com>2016-10-20 16:08:49 +0300
committerGravatar Nikolaus Rath <Nikolaus@rath.org>2016-10-20 08:29:46 -0700
commit7c01d75a89051997ee620f2c2eeaf77b00824a5d (patch)
tree366c79a352600df9f7e106f9d4e4ec6b61b22eb1 /lib
parent04f1039df23ddc1883ea976bdd62b82ea70dbfbe (diff)
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.
Diffstat (limited to 'lib')
-rw-r--r--lib/fuse_lowlevel.c4
1 files changed, 3 insertions, 1 deletions
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;