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;
 }