mirror of https://github.com/aria2/aria2
2010-03-05 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Fixed memory leak in SocketBuffer when _bufq is not empty when SocketBuffer is deleted. Added BufEntry constructor and deleted static factory functions. * src/SocketBuffer.cc * src/SocketBuffer.hpull/1/head
parent
fe8fea56ca
commit
f0938cf1d6
|
@ -1,3 +1,11 @@
|
|||
2010-03-05 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||
|
||||
Fixed memory leak in SocketBuffer when _bufq is not empty when
|
||||
SocketBuffer is deleted. Added BufEntry constructor and deleted
|
||||
static factory functions.
|
||||
* src/SocketBuffer.cc
|
||||
* src/SocketBuffer.h
|
||||
|
||||
2010-03-05 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||
|
||||
Only execute RequestGroupMan::fillRequestGroupFromReserver() when
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
#include "SocketBuffer.h"
|
||||
|
||||
#include <cassert>
|
||||
#include <algorithm>
|
||||
|
||||
#include "SocketCore.h"
|
||||
#include "DlAbortEx.h"
|
||||
|
@ -46,16 +47,20 @@ namespace aria2 {
|
|||
SocketBuffer::SocketBuffer(const SharedHandle<SocketCore>& socket):
|
||||
_socket(socket), _offset(0) {}
|
||||
|
||||
SocketBuffer::~SocketBuffer() {}
|
||||
SocketBuffer::~SocketBuffer()
|
||||
{
|
||||
std::for_each(_bufq.begin(), _bufq.end(),
|
||||
std::mem_fun_ref(&BufEntry::deleteBuf));
|
||||
}
|
||||
|
||||
void SocketBuffer::pushBytes(unsigned char* bytes, size_t len)
|
||||
{
|
||||
_bufq.push_back(BufEntry::createBytes(bytes, len));
|
||||
_bufq.push_back(BufEntry(bytes, len));
|
||||
}
|
||||
|
||||
void SocketBuffer::pushStr(const std::string& data)
|
||||
{
|
||||
_bufq.push_back(BufEntry::createStr(data));
|
||||
_bufq.push_back(BufEntry(data));
|
||||
}
|
||||
|
||||
ssize_t SocketBuffer::send()
|
||||
|
|
|
@ -67,22 +67,11 @@ private:
|
|||
}
|
||||
}
|
||||
|
||||
static BufEntry createBytes(unsigned char* bytes, size_t len)
|
||||
{
|
||||
BufEntry b;
|
||||
b.type = TYPE_BYTES;
|
||||
b.bytes = bytes;
|
||||
b.bytesLen = len;
|
||||
return b;
|
||||
}
|
||||
BufEntry(unsigned char* bytes, size_t len):
|
||||
type(TYPE_BYTES), bytes(bytes), bytesLen(len) {}
|
||||
|
||||
static BufEntry createStr(const std::string& str)
|
||||
{
|
||||
BufEntry b;
|
||||
b.type = TYPE_STR;
|
||||
b.str = new std::string(str);
|
||||
return b;
|
||||
}
|
||||
BufEntry(const std::string& str):
|
||||
type(TYPE_STR), str(new std::string(str)) {}
|
||||
};
|
||||
|
||||
SharedHandle<SocketCore> _socket;
|
||||
|
|
Loading…
Reference in New Issue