Changeset 5155

Show
Ignore:
Timestamp:
01/05/08 01:30:32 (9 months ago)
Author:
morris
Message:

Fix crash

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • wire/trunk/wire/transfers.c

    r5079 r5155  
    8181        bytes = wi_socket_read_buffer(socket, 15.0, buf, sizeof(buf)); 
    8282        transfer = wr_transfers_transfer_with_socket(socket); 
    83  
    84         if(bytes > 0) { 
    85                 transfer->transferred += bytes; 
    86                 wr_received_bytes += bytes; 
    87                  
    88                 if(wi_file_write_buffer(transfer->file, buf, bytes) < 0) { 
    89                         wr_printf_prefix(WI_STR("Could not write to %@: %m"), 
    90                                 transfer->local_path); 
     83         
     84        if(transfer) { 
     85                if(bytes > 0) { 
     86                        transfer->transferred += bytes; 
     87                        wr_received_bytes += bytes; 
     88                         
     89                        if(wi_file_write_buffer(transfer->file, buf, bytes) < 0) { 
     90                                wr_printf_prefix(WI_STR("Could not write to %@: %m"), 
     91                                        transfer->local_path); 
     92 
     93                                wr_transfer_stop(transfer); 
     94                        } else { 
     95                                wr_draw_transfers(false); 
     96                        } 
     97                } else { 
     98                        if(bytes < 0) { 
     99                                wr_printf_prefix(WI_STR("Transfer of \"%@\" failed: %m"), 
     100                                        transfer->name); 
     101                        } else { 
     102                                if(transfer->transferred == transfer->size) { 
     103                                        wr_printf_prefix(WI_STR("Transfer of \"%@\" completed"), 
     104                                                transfer->name); 
     105 
     106                                        path = wi_string_by_deleting_path_extension(transfer->local_path); 
     107                                         
     108                                        wi_file_rename(transfer->local_path, path); 
     109                                } else { 
     110                                        wr_printf_prefix(WI_STR("Transfer of \"%@\" stopped"), 
     111                                                transfer->name); 
     112                                } 
     113                        } 
    91114 
    92115                        wr_transfer_stop(transfer); 
    93                 } else { 
    94                         wr_draw_transfers(false); 
    95116                } 
    96         } else { 
    97                 if(bytes < 0) { 
    98                         wr_printf_prefix(WI_STR("Transfer of \"%@\" failed: %m"), 
    99                                 transfer->name); 
    100                 } else { 
    101                         if(transfer->transferred == transfer->size) { 
    102                                 wr_printf_prefix(WI_STR("Transfer of \"%@\" completed"), 
    103                                         transfer->name); 
    104  
    105                                 path = wi_string_by_deleting_path_extension(transfer->local_path); 
    106                                  
    107                                 wi_file_rename(transfer->local_path, path); 
    108                         } else { 
    109                                 wr_printf_prefix(WI_STR("Transfer of \"%@\" stopped"), 
    110                                         transfer->name); 
    111                         } 
    112                 } 
    113  
    114                 wr_transfer_stop(transfer); 
    115117        } 
    116118