de6a035
diff -up mc-4.7.5-pre1/lib/vfs/mc-vfs/direntry.c.vfscrash mc-4.7.5-pre1/lib/vfs/mc-vfs/direntry.c
de6a035
--- mc-4.7.5-pre1/lib/vfs/mc-vfs/direntry.c.vfscrash	2010-12-06 12:03:44.000000000 +0100
de6a035
+++ mc-4.7.5-pre1/lib/vfs/mc-vfs/direntry.c	2010-12-08 14:27:08.975092483 +0100
de6a035
@@ -1166,8 +1166,12 @@ vfs_s_open (struct vfs_class *me, const 
de6a035
         }
de6a035
 
de6a035
         split_dir_name (me, q, &dirname, &name, &save);
de6a035
-        /* FIXME: check if vfs_s_find_inode returns NULL */
de6a035
         dir = vfs_s_find_inode (me, super, dirname, LINK_FOLLOW, FL_DIR);
de6a035
+        if (dir == NULL)
de6a035
+        {
de6a035
+            g_free (q);
de6a035
+            return NULL;
de6a035
+        }
de6a035
         if (save)
de6a035
             *save = PATH_SEP;
de6a035
         ent = vfs_s_generate_entry (me, name, dir, 0755);
de6a035
diff -up mc-4.7.5-pre1/lib/vfs/mc-vfs/gc.c.vfscrash mc-4.7.5-pre1/lib/vfs/mc-vfs/gc.c
de6a035
--- mc-4.7.5-pre1/lib/vfs/mc-vfs/gc.c.vfscrash	2010-12-03 09:53:38.000000000 +0100
de6a035
+++ mc-4.7.5-pre1/lib/vfs/mc-vfs/gc.c	2010-12-08 14:35:37.886866014 +0100
de6a035
@@ -222,7 +222,7 @@ vfs_stamp_create (struct vfs_class *oldv
de6a035
         n3vfsid = NULL;
de6a035
     }
de6a035
 
de6a035
-    if (!oldvfs->nothingisopen || !(*oldvfs->nothingisopen) (oldvfsid))
de6a035
+    if (!oldvfs || !oldvfs->nothingisopen || !(*oldvfs->nothingisopen) (oldvfsid))
de6a035
         return;
de6a035
 
de6a035
     vfs_addstamp (oldvfs, oldvfsid);