Description
I've found a few memory leaks in the Openwire code when running the unit tests for our library. I'll report the first few now (the ones I think I've figured out), and I'll add info on further leaks in separate comments.
First possible leak:
==22866== 1728 (864 direct, 864 indirect) bytes in 12 blocks are definitely lost in loss record 25 of 40
==22866== at 0x1B90939A: operator new(unsigned) (vg_replace_malloc.c:132)
==22866== by 0x81943CA: activemq::connector::openwire::OpenWireConnector::createConsumerInfo(cms::Destination const*, activemq::connector::SessionInfo*) (OpenWireConnector.cpp:621)
==22866== by 0x81994FD: activemq::connector::openwire::OpenWireConnector::createConsumer(cms::Destination const*, activemq::connector::SessionInfo*, std::string const&, bool) (OpenWireConnector.cpp:382)
==22866== by 0x8148B89: activemq::core::ActiveMQSession::createConsumer(cms::Destination const*, std::string const&, bool) (ActiveMQSession.cpp:236)
==22866== by 0x8146CAB: activemq::core::ActiveMQSession::createConsumer(cms::Destination const*, std::string const&) (ActiveMQSession.cpp:208)
OpenWireConnector::createConsumerInfo allocates a commands::ConsumerInfo which is returned to OpenWireConnector::createConsumer which does a few things with it, but doesn't delete it if the member function returns normally.
Next possible leak:
==22866== 1232 (440 direct, 792 indirect) bytes in 11 blocks are definitely lost in loss record 27 of 40
==22866== at 0x1B90939A: operator new(unsigned) (vg_replace_malloc.c:132)
==22866== by 0x81989F7: activemq::connector::openwire::OpenWireConnector::createProducer(cms::Destination const*, activemq::connector::SessionInfo*) (OpenWireConnector.cpp:680)
==22866== by 0x8149324: activemq::core::ActiveMQSession::createProducer(cms::Destination const*) (ActiveMQSession.cpp:309)
OpenWireConnector::createProducer allocates a OpenWireProducerInfo which isn't deleted if the member function returns normally.