fix
diff --git a/ChangeLog b/ChangeLog
index ca86052..cc49014 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2005-12-02 Miklos Szeredi <miklos@szeredi.hu>
+
+ * Fix memory leak in fuse_read_cmd()/fuse_process_cmd(). Bug
+ reported by Vincenzo Ciancia
+
+ * Handle exit-by-umount in fuse_read_cmd()
+
2005-11-29 Miklos Szeredi <miklos@szeredi.hu>
* Check if '-msoft-float' option is supported by compiler when
diff --git a/lib/fuse.c b/lib/fuse.c
index 4146d41..8733164 100644
--- a/lib/fuse.c
+++ b/lib/fuse.c
@@ -1742,6 +1742,7 @@
void fuse_process_cmd(struct fuse *f, struct fuse_cmd *cmd)
{
fuse_session_process(f->se, cmd->buf, cmd->buflen, cmd->ch);
+ free_cmd(cmd);
}
int fuse_exited(struct fuse *f)
@@ -1779,6 +1780,8 @@
int res = fuse_chan_receive(ch, cmd->buf, bufsize);
if (res <= 0) {
free_cmd(cmd);
+ if (res == -1)
+ fuse_exit(f);
return NULL;
}
cmd->buflen = res;