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