fix some memory management stupidity for Assignments

This commit is contained in:
Stephen Birarda 2013-09-05 17:54:37 -07:00
parent 54b50e0e76
commit 67299b0eea
2 changed files with 25 additions and 0 deletions

View file

@ -70,6 +70,30 @@ Assignment::Assignment(const unsigned char* dataBuffer, int numBytes) :
}
}
Assignment::Assignment(const Assignment& assignment) :
_pool(NULL),
_domainSocket(NULL)
{
_direction = assignment._direction;
_type = assignment._type;
if (assignment._pool) {
_pool = new char[strlen(assignment._pool)];
strcpy(_pool, assignment._pool);
}
if (assignment._domainSocket) {
if (assignment._domainSocket->sa_family == AF_INET) {
_domainSocket = (sockaddr*) new sockaddr_in;
memcpy(_domainSocket, assignment._domainSocket, sizeof(sockaddr_in));
} else {
_domainSocket = (sockaddr*) new sockaddr_in6;
memcpy(_domainSocket, assignment._domainSocket, sizeof(sockaddr_in6));
}
}
}
Assignment::~Assignment() {
delete _domainSocket;
delete _pool;

View file

@ -28,6 +28,7 @@ public:
Assignment(Assignment::Direction direction, Assignment::Type type, const char* pool = NULL);
Assignment(const unsigned char* dataBuffer, int numBytes);
Assignment(const Assignment& assignment);
~Assignment();
Assignment::Direction getDirection() const { return _direction; }