Ticket #2674: mc-4.8.0-reget-align.patch

File mc-4.8.0-reget-align.patch, 1.3 KB (added by egmont, 8 years ago)

proof of concept

  • src/filemanager/file.c

    diff -ur mc-4.8.0.orig/src/filemanager/file.c mc-4.8.0/src/filemanager/file.c
    old new  
    15221522        struct timeval tv_current, tv_last_update, tv_last_input; 
    15231523        int secs, update_secs; 
    15241524        const char *stalled_msg = ""; 
     1525        int read_size; 
     1526        char buf[BUF_8K]; 
    15251527 
    15261528        tv_last_update = tv_transfer_start; 
    15271529 
     1530        read_size = sizeof (buf) - ctx->do_reget % sizeof (buf); 
     1531 
    15281532        for (;;) 
    15291533        { 
    1530             char buf[BUF_8K]; 
    1531  
    15321534            /* src_read */ 
    15331535            if (mc_ctl (src_desc, VFS_CTL_IS_NOTREADY, 0)) 
    15341536                n_read = -1; 
    15351537            else 
    1536                 while ((n_read = mc_read (src_desc, buf, sizeof (buf))) < 0 && !ctx->skip_all) 
     1538                while ((n_read = mc_read (src_desc, buf, read_size)) < 0 && !ctx->skip_all) 
    15371539                { 
    15381540                    return_status = file_error (_("Cannot read source file\"%s\"\n%s"), src_path); 
    15391541                    if (return_status == FILE_RETRY) 
     
    15451547            if (n_read == 0) 
    15461548                break; 
    15471549 
     1550            read_size = sizeof (buf); 
     1551 
    15481552            gettimeofday (&tv_current, NULL); 
    15491553 
    15501554            if (n_read > 0)