From 9c1fe4addd1fec52f9d071b9c308ba167562ae70 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Thu, 15 Nov 2012 22:05:59 +0900 Subject: [PATCH] Use array_ptr to remove try block --- src/BtPieceMessage.cc | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/BtPieceMessage.cc b/src/BtPieceMessage.cc index d7404497..3ddc140a 100644 --- a/src/BtPieceMessage.cc +++ b/src/BtPieceMessage.cc @@ -56,6 +56,7 @@ #include "fmt.h" #include "DownloadContext.h" #include "PeerStorage.h" +#include "array_fun.h" namespace aria2 { @@ -205,16 +206,13 @@ void BtPieceMessage::send() void BtPieceMessage::pushPieceData(int64_t offset, int32_t length) const { assert(length <= 16*1024); - unsigned char* buf = new unsigned char[length]; + array_ptr buf(new unsigned char[length]); ssize_t r; - try { - r = getPieceStorage()->getDiskAdaptor()->readData(buf, length, offset); - } catch(RecoverableException& e) { - delete [] buf; - throw; - } + r = getPieceStorage()->getDiskAdaptor()->readData(buf, length, offset); if(r == length) { - getPeerConnection()->pushBytes(buf, length); + unsigned char* dbuf = buf; + buf.reset(0); + getPeerConnection()->pushBytes(dbuf, length); } else { throw DL_ABORT_EX(EX_DATA_READ); }