From 419cac616c5e8b28117da576109fa91222b9ab5f Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Tue, 3 Jun 2014 12:22:03 +0200 Subject: [PATCH] Fix memory leak in presence model. --- coreapi/presence.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/coreapi/presence.c b/coreapi/presence.c index fa4b97014..df9271844 100644 --- a/coreapi/presence.c +++ b/coreapi/presence.c @@ -278,6 +278,7 @@ LinphonePresenceBasicStatus linphone_presence_model_get_basic_status(const Linph int linphone_presence_model_set_basic_status(LinphonePresenceModel *model, LinphonePresenceBasicStatus basic_status) { LinphonePresenceService *service; + int err = 0; if (model == NULL) return -1; @@ -285,8 +286,9 @@ int linphone_presence_model_set_basic_status(LinphonePresenceModel *model, Linph service = linphone_presence_service_new(NULL, basic_status, NULL); if (service == NULL) return -1; - if (linphone_presence_model_add_service(model, service) < 0) return -1; - return 0; + err = linphone_presence_model_add_service(model, service); + linphone_presence_service_unref(service); + return err; } static void presence_service_find_newer_timestamp(LinphonePresenceService *service, time_t *timestamp) { @@ -363,6 +365,7 @@ LinphonePresenceActivity * linphone_presence_model_get_activity(const LinphonePr int linphone_presence_model_set_activity(LinphonePresenceModel *model, LinphonePresenceActivityType acttype, const char *description) { LinphonePresenceBasicStatus basic_status = LinphonePresenceBasicStatusOpen; LinphonePresenceActivity *activity; + int err = 0; if (model == NULL) return -1; @@ -383,8 +386,9 @@ int linphone_presence_model_set_activity(LinphonePresenceModel *model, LinphoneP linphone_presence_model_clear_activities(model); activity = linphone_presence_activity_new(acttype, description); if (activity == NULL) return -1; - return linphone_presence_model_add_activity(model, activity); - + err = linphone_presence_model_add_activity(model, activity); + linphone_presence_activity_unref(activity); + return err; } unsigned int linphone_presence_model_get_nb_activities(const LinphonePresenceModel *model) {