diff --git a/src/address/address.cpp b/src/address/address.cpp index 84bdd37b7..033c027c8 100644 --- a/src/address/address.cpp +++ b/src/address/address.cpp @@ -34,6 +34,8 @@ LINPHONE_BEGIN_NAMESPACE // ----------------------------------------------------------------------------- void AddressPrivate::setInternalAddress (const SalAddress *addr) { + if (internalAddress) + sal_address_unref(internalAddress); internalAddress = sal_address_clone(addr); } diff --git a/src/conference/local-conference.cpp b/src/conference/local-conference.cpp index 50848259a..d9d757aba 100644 --- a/src/conference/local-conference.cpp +++ b/src/conference/local-conference.cpp @@ -34,6 +34,11 @@ LocalConference::LocalConference (const shared_ptr &core, const IdentityAd d->eventHandler.reset(new LocalConferenceEventHandler(this)); } +LocalConference::~LocalConference () { + L_D(); + d->eventHandler.reset(); +} + // ----------------------------------------------------------------------------- void LocalConference::addParticipant (const IdentityAddress &addr, const CallSessionParams *params, bool hasMedia) { diff --git a/src/conference/local-conference.h b/src/conference/local-conference.h index a53f77b90..c7984f101 100644 --- a/src/conference/local-conference.h +++ b/src/conference/local-conference.h @@ -33,6 +33,7 @@ class LocalConference : public Conference { public: LocalConference (const std::shared_ptr &core, const IdentityAddress &myAddress, CallSessionListener *listener); + virtual ~LocalConference (); /* ConferenceInterface */ void addParticipant (const IdentityAddress &addr, const CallSessionParams *params, bool hasMedia) override; diff --git a/src/conference/remote-conference.cpp b/src/conference/remote-conference.cpp index 55d46e619..7837cb1da 100644 --- a/src/conference/remote-conference.cpp +++ b/src/conference/remote-conference.cpp @@ -37,6 +37,11 @@ RemoteConference::RemoteConference ( d->eventHandler.reset(new RemoteConferenceEventHandler(this)); } +RemoteConference::~RemoteConference () { + L_D(); + d->eventHandler.reset(); +} + // ----------------------------------------------------------------------------- void RemoteConference::addParticipant (const IdentityAddress &addr, const CallSessionParams *params, bool hasMedia) { diff --git a/src/conference/remote-conference.h b/src/conference/remote-conference.h index 1b5e62f47..e0e3b8f5d 100644 --- a/src/conference/remote-conference.h +++ b/src/conference/remote-conference.h @@ -35,6 +35,7 @@ class LINPHONE_PUBLIC RemoteConference : public Conference, public ConferenceLis public: RemoteConference (const std::shared_ptr &core, const IdentityAddress &myAddress, CallSessionListener *listener); + virtual ~RemoteConference (); /* ConferenceInterface */ void addParticipant (const IdentityAddress &addr, const CallSessionParams *params, bool hasMedia) override; diff --git a/tester/register_tester.c b/tester/register_tester.c index cf7dc0c1f..44e83945f 100644 --- a/tester/register_tester.c +++ b/tester/register_tester.c @@ -1252,7 +1252,9 @@ static void register_get_gruu(void) { if(cfg) { const LinphoneAddress *addr = linphone_proxy_config_get_contact(cfg); BC_ASSERT_PTR_NOT_NULL(addr); - BC_ASSERT_PTR_NOT_NULL(strstr(linphone_address_as_string_uri_only(addr), "gr")); + char *addrStr = linphone_address_as_string_uri_only(addr); + BC_ASSERT_PTR_NOT_NULL(strstr(addrStr, "gr")); + bctbx_free(addrStr); } linphone_core_manager_destroy(marie); } diff --git a/tester/tester.c b/tester/tester.c index 48e067f41..63783b0b1 100644 --- a/tester/tester.c +++ b/tester/tester.c @@ -489,6 +489,8 @@ void linphone_core_manager_uninit(LinphoneCoreManager *mgr) { if (mgr->identity) { linphone_address_unref(mgr->identity); } + if (mgr->rc_path) + bctbx_free(mgr->rc_path); manager_count--; linphone_core_set_log_level(old_log_level);