Ticket #1712: mc-vfsfail.patch

File mc-vfsfail.patch, 1.7 KB (added by slavazanko, 15 years ago)
  • mc-4.7.0/vfs/vfs.c

    diff -up mc-4.7.0/vfs/vfs.c.jn mc-4.7.0/vfs/vfs.c
    old new int 
    675675mc_ctl (int handle, int ctlop, void *arg) 
    676676{ 
    677677    struct vfs_class *vfs = vfs_op (handle); 
     678     
     679    if (vfs == NULL) 
     680        return 0; 
    678681 
    679682    return vfs->ctl ? (*vfs->ctl)(vfs_info (handle), ctlop, arg) : 0; 
    680683} 
    mc_close (int handle) 
    708711        return -1; 
    709712     
    710713    vfs = vfs_op (handle); 
     714     
     715    if (vfs == NULL) 
     716        return -1; 
     717     
    711718    if (handle < 3) 
    712719        return close (handle); 
    713720 
    mc_readdir (DIR *dirp) 
    798805    } 
    799806    handle = *(int *) dirp; 
    800807    vfs = vfs_op (handle); 
     808    if (vfs == NULL) 
     809        return NULL; 
    801810    dirinfo = vfs_info (handle); 
    802811    if (vfs->readdir) { 
    803812        entry = (*vfs->readdir) (dirinfo->info); 
    mc_closedir (DIR *dirp) 
    820829    int result; 
    821830    struct vfs_dirinfo *dirinfo; 
    822831 
     832    if (vfs == NULL) 
     833        return -1; 
     834 
    823835    dirinfo = vfs_info (handle); 
    824836    if (dirinfo->converter != str_cnv_from_term) str_close_conv (dirinfo->converter); 
    825837 
    int mc_fstat (int handle, struct stat *b 
    874886    if (handle == -1) 
    875887        return -1; 
    876888    vfs = vfs_op (handle); 
     889    if (vfs == NULL) 
     890        return -1; 
    877891    result = vfs->fstat ? (*vfs->fstat) (vfs_info (handle), buf) : -1; 
    878892    if (result == -1) 
    879893        errno = vfs->name ? ferrno (vfs) : E_NOTSUPP; 
    off_t mc_lseek (int fd, off_t offset, in 
    967981        return -1; 
    968982 
    969983    vfs = vfs_op (fd); 
     984    if (vfs == NULL) 
     985        return -1; 
    970986    result = vfs->lseek ? (*vfs->lseek)(vfs_info (fd), offset, whence) : -1; 
    971987    if (result == -1) 
    972988        errno = vfs->lseek ? ferrno (vfs) : E_NOTSUPP;