Changeset 5889 for branches/1.2x


Ignore:
Timestamp:
May 21, 2008, 8:03:31 PM (14 years ago)
Author:
charles
Message:

#960: backport the crash-on-startup fix from trunk's r5852

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/1.2x/libtransmission/metainfo.c

    r5739 r5889  
    172172        uint8_t * content;
    173173
     174        tr_mkdirp( tr_getTorrentDir( handle ), 0777 );
    174175        getTorrentOldFilename( handle, inf, old_name, sizeof( old_name ) );
    175176        if(( content = tr_loadFile( old_name, &contentLen )))
    176177        {
    177             FILE * out = fopen( new_name, "wb+" );
    178             if( fwrite( content, sizeof( uint8_t ), contentLen, out ) == contentLen )
     178            FILE * out;
     179            errno = 0;
     180            out = fopen( new_name, "wb+" );
     181            if( !out )
    179182            {
    180                 tr_free( inf->torrent );
    181                 inf->torrent = tr_strdup( new_name );
    182                 tr_sessionSetTorrentFile( handle, inf->hashString, new_name );
    183                 unlink( old_name );
     183                tr_nerr( inf->name, _( "Couldn't create \"%1$s\": %2$s" ), new_name, tr_strerror( errno ) );
    184184            }
    185             fclose( out );
     185            else
     186            {
     187                if( fwrite( content, sizeof( uint8_t ), contentLen, out ) == contentLen )
     188                {
     189                    tr_free( inf->torrent );
     190                    inf->torrent = tr_strdup( new_name );
     191                    tr_sessionSetTorrentFile( handle, inf->hashString, new_name );
     192                    unlink( old_name );
     193                }
     194                fclose( out );
     195            }
    186196        }
    187197
Note: See TracChangeset for help on using the changeset viewer.