From c061390f6513a632c38c094125461e89e6a9944c Mon Sep 17 00:00:00 2001 From: Jordan Lee Date: Wed, 27 Apr 2011 21:33:52 +0000 Subject: [PATCH] (trunk libT) heap pruning: using the same mechanism as in r12388, avoid an unnecessary malloc+memcpy+free in tr_bencToFile() --- libtransmission/bencode.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/libtransmission/bencode.c b/libtransmission/bencode.c index 10093846b..45ad90ff6 100644 --- a/libtransmission/bencode.c +++ b/libtransmission/bencode.c @@ -1683,8 +1683,10 @@ tr_bencToFile( const tr_benc * top, tr_fmt_mode mode, const char * filename ) /* save the benc to a temporary file */ { - char * buf = tr_bencToStr( top, mode, &nleft ); - const char * walk = buf; + struct evbuffer * buf = tr_bencToBuf( top, mode ); + const char * walk = (const char *) evbuffer_pullup( buf, -1 ); + nleft = evbuffer_get_length( buf ); + while( nleft > 0 ) { const int n = write( fd, walk, nleft ); if( n >= 0 ) { @@ -1696,7 +1698,8 @@ tr_bencToFile( const tr_benc * top, tr_fmt_mode mode, const char * filename ) break; } } - tr_free( buf ); + + evbuffer_free( buf ); } if( nleft > 0 ) -- 2.40.0