7b39c80
diff -up mc-4.7.4/lib/vfs/mc-vfs/direntry.c.vfscrash mc-4.7.4/lib/vfs/mc-vfs/direntry.c
7b39c80
--- mc-4.7.4/lib/vfs/mc-vfs/direntry.c.vfscrash	2010-09-07 09:16:43.000000000 +0200
7b39c80
+++ mc-4.7.4/lib/vfs/mc-vfs/direntry.c	2010-12-09 08:50:40.695756257 +0100
7b39c80
@@ -787,8 +787,12 @@ vfs_s_open (struct vfs_class *me, const 
7b39c80
         }
7b39c80
 
7b39c80
         split_dir_name (me, q, &dirname, &name, &save);
7b39c80
-        /* FIXME: check if vfs_s_find_inode returns NULL */
7b39c80
         dir = vfs_s_find_inode (me, super, dirname, LINK_FOLLOW, FL_DIR);
7b39c80
+        if (dir == NULL)
7b39c80
+        {
7b39c80
+            g_free (q);
7b39c80
+            return NULL;
7b39c80
+        }
7b39c80
         if (save)
7b39c80
             *save = PATH_SEP;
7b39c80
         ent = vfs_s_generate_entry (me, name, dir, 0755);
7b39c80
diff -up mc-4.7.4/lib/vfs/mc-vfs/gc.c.vfscrash mc-4.7.4/lib/vfs/mc-vfs/gc.c
7b39c80
--- mc-4.7.4/lib/vfs/mc-vfs/gc.c.vfscrash	2010-09-07 09:16:43.000000000 +0200
7b39c80
+++ mc-4.7.4/lib/vfs/mc-vfs/gc.c	2010-12-09 08:51:30.500778054 +0100
7b39c80
@@ -195,7 +195,7 @@ vfs_stamp_create (struct vfs_class *oldv
7b39c80
 	n3vfsid = NULL;
7b39c80
     }
7b39c80
 
7b39c80
-    if (!oldvfs->nothingisopen || !(*oldvfs->nothingisopen) (oldvfsid))
7b39c80
+    if (!oldvfs || !oldvfs->nothingisopen || !(*oldvfs->nothingisopen) (oldvfsid))
7b39c80
 	return;
7b39c80
 
7b39c80
     vfs_addstamp (oldvfs, oldvfsid);