Changeset 5852


Ignore:
Timestamp:
May 19, 2008, 2:06:44 PM (14 years ago)
Author:
charles
Message:

possible fix for the crash in http://forum.transmissionbt.com/viewtopic.php?t=4847

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/libtransmission/metainfo.c

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