fix
diff --git a/ChangeLog b/ChangeLog
index f246add..891dfd9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2004-09-21 Miklos Szeredi <miklos@szeredi.hu>
+
+ * Fix deadlock in case of memory allocation failure. Patch by
+ Christian Magnusson
+
2004-09-16 Miklos Szeredi <miklos@szeredi.hu>
* Check memory allocation failures in libfuse
diff --git a/lib/fuse.c b/lib/fuse.c
index a207fc0..a4d547a 100644
--- a/lib/fuse.c
+++ b/lib/fuse.c
@@ -215,7 +215,7 @@
node = (struct node *) calloc(1, sizeof(struct node));
if (node == NULL)
- return NULL;
+ goto out_err;
node->mode = mode;
node->rdev = rdev;
@@ -225,12 +225,14 @@
node->generation = f->generation;
if (hash_name(f, node, parent, name) == -1) {
free(node);
- return NULL;
+ node = NULL;
+ goto out_err;
}
hash_ino(f, node);
- out:
+ out:
node->version = version;
+ out_err:
pthread_mutex_unlock(&f->lock);
return node;
}