[Messaging] fix for memory leak
authorLukasz Bardeli <l.bardeli@samsung.com>
Mon, 2 May 2016 13:02:40 +0000 (15:02 +0200)
committerLukasz Bardeli <l.bardeli@samsung.com>
Mon, 2 May 2016 13:02:40 +0000 (15:02 +0200)
Change-Id: Id05e8dda11d5840bf5470f1711fca96183e27f23
Signed-off-by: Lukasz Bardeli <l.bardeli@samsung.com>
src/messaging/email_manager.cc

index 2e15dd17ca64e9ca3ecbb63adca1c83869ded2f7..cd275dbe8bde90abf90cba14531aa305164b37be 100755 (executable)
@@ -269,17 +269,33 @@ PlatformResult EmailManager::addMessagePlatform(int account_id,
 
     if (message->getHasAttachment()){
         ret = Message::addEmailAttachments(message);
-        if (ret.IsError()) return ret;
+        if (ret.IsError()) {
+          int ntv_ret = email_free_mail_data(&mail_data,1);
+          if(EMAIL_ERROR_NONE != ntv_ret) {
+              LoggerE("Failed to free mail data memory: %d (%s)", ntv_ret, get_error_message(ntv_ret));
+          }
+          return ret;
+        }
     }
 
     err = email_get_mail_data(message->getId(), &mail_data_final);
     if(EMAIL_ERROR_NONE != err) {
-        return LogAndCreateResult(
-                  ErrorCode::UNKNOWN_ERR, "Couldn't retrieve added mail data",
-                  ("email_get_mail_data error: %d (%s)", err, get_error_message(err)));
+      int ntv_ret = email_free_mail_data(&mail_data,1);
+      if(EMAIL_ERROR_NONE != ntv_ret) {
+          LoggerE("Failed to free mail data memory: %d (%s)", ntv_ret, get_error_message(ntv_ret));
+      }
+      return LogAndCreateResult(
+                ErrorCode::UNKNOWN_ERR, "Couldn't retrieve added mail data",
+                ("email_get_mail_data error: %d (%s)", err, get_error_message(err)));
     }
     ret = message->updateEmailMessage(*mail_data_final);
-    if (ret.IsError()) return ret;
+    if (ret.IsError()) {
+      int ntv_ret = email_free_mail_data(&mail_data,1);
+      if(EMAIL_ERROR_NONE != ntv_ret) {
+          LoggerE("Failed to free mail data memory: %d (%s)", ntv_ret, get_error_message(ntv_ret));
+      }
+      return ret;
+    }
 
     err = email_free_mail_data(&mail_data_final,1);
     if(EMAIL_ERROR_NONE != err) {