diff options
Diffstat (limited to 'lib/fuse_loop.c')
-rw-r--r-- | lib/fuse_loop.c | 16 |
1 files changed, 4 insertions, 12 deletions
diff --git a/lib/fuse_loop.c b/lib/fuse_loop.c index 91d2dd8..7ddf2f9 100644 --- a/lib/fuse_loop.c +++ b/lib/fuse_loop.c @@ -16,19 +16,11 @@ int fuse_session_loop(struct fuse_session *se) { int res = 0; struct fuse_chan *ch = fuse_session_chan(se); - size_t bufsize = fuse_chan_bufsize(ch); - char *buf = (char *) malloc(bufsize); - if (!buf) { - fprintf(stderr, "fuse: failed to allocate read buffer\n"); - return -1; - } + struct fuse_buf fbuf = { + .mem = NULL, + }; while (!fuse_session_exited(se)) { - struct fuse_buf fbuf = { - .mem = buf, - .size = bufsize, - }; - res = fuse_session_receive_buf(se, &fbuf, ch); if (res == -EINTR) @@ -39,7 +31,7 @@ int fuse_session_loop(struct fuse_session *se) fuse_session_process_buf(se, &fbuf, ch); } - free(buf); + free(fbuf.mem); fuse_session_reset(se); return res < 0 ? -1 : 0; } |