diff options
Diffstat (limited to 'src/components/transport_manager/src/transport_manager_impl.cc')
-rw-r--r-- | src/components/transport_manager/src/transport_manager_impl.cc | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/components/transport_manager/src/transport_manager_impl.cc b/src/components/transport_manager/src/transport_manager_impl.cc index f7b44d255b..83419a50c9 100644 --- a/src/components/transport_manager/src/transport_manager_impl.cc +++ b/src/components/transport_manager/src/transport_manager_impl.cc @@ -435,16 +435,17 @@ int TransportManagerImpl::AddTransportAdapter( return E_ADAPTER_EXISTS; } - transport_adapter_listeners_[transport_adapter] = + auto listener = new TransportAdapterListenerImpl(this, transport_adapter); - transport_adapter->AddListener( - transport_adapter_listeners_[transport_adapter]); + + transport_adapter->AddListener(listener); if (transport_adapter->IsInitialised() || transport_adapter->Init() == TransportAdapter::OK) { + transport_adapter_listeners_[transport_adapter] = listener; transport_adapters_.push_back(transport_adapter); } else { - transport_adapter_listeners_.erase(transport_adapter); + delete listener; delete transport_adapter; } LOG4CXX_TRACE(logger_, "exit with E_SUCCESS"); |