From 38a032b1bf2b5d307d5fdd725d16d0f795e69d7e Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Sat, 6 Jun 2009 19:30:32 +0000 Subject: [PATCH] (trunk libT) possible fix for benc/json saving issues reported in 1.70. This is a guess from rb07's post in the forums about bencode.c, and from John Clay's comments in irc --- libtransmission/bencode.c | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/libtransmission/bencode.c b/libtransmission/bencode.c index 9a9ad56cd..c9a4e31e4 100644 --- a/libtransmission/bencode.c +++ b/libtransmission/bencode.c @@ -1544,22 +1544,17 @@ tr_bencToFile( const tr_benc * top, tr_fmt_mode mode, const char * filename ) } else { - struct evbuffer * buf = evbuffer_new( ); - tr_bencToBuf( top, mode, buf ); + int len; + char * str = tr_bencToStr( top, mode, &len ); - while( !err && EVBUFFER_LENGTH( buf ) ) - { - if( evbuffer_write( buf, fileno(fp) ) == -1 ) - { - err = errno; - tr_err( _( "Couldn't save file \"%1$s\": %2$s" ), - filename, tr_strerror( errno ) ); - } + if( fwrite( str, 1, len, fp ) == (size_t)len ) + tr_dbg( "tr_bencToFile saved \"%s\"", filename ); + else { + err = errno; + tr_err( _( "Couldn't save file \"%1$s\": %2$s" ), filename, tr_strerror( errno ) ); } - if( !err ) - tr_dbg( "tr_bencToFile saved \"%s\"", filename ); - evbuffer_free( buf ); + tr_free( str ); fclose( fp ); }