From: Pawel Andruszkiewicz
Date: Tue, 9 Jun 2015 10:45:01 +0000 (+0200)
Subject: [Messaging] Automatically release message memory.
X-Git-Tag: submit/tizen_mobile/20150612.133019^2~2^2~16^2
X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=753972e2cc46e3de2d60cce98212237894e7c41d;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git
[Messaging] Automatically release message memory.
Prevent CID: 392578
[Verification] TCT pass rate (SMS) did not change.
Change-Id: Ib85ffad173aa01a31b3d39b3f5529ac2c0a0837f
Signed-off-by: Pawel Andruszkiewicz
---
diff --git a/src/messaging/message.cc b/src/messaging/message.cc
index 70f8f234..3ea693c5 100755
--- a/src/messaging/message.cc
+++ b/src/messaging/message.cc
@@ -820,15 +820,16 @@ PlatformResult Message::convertPlatformShortMessageToStruct(Message* message,
}
msg_error_t err = MSG_SUCCESS;
- msg_struct_t sendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);
+
msg_struct_t msg = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
+ std::unique_ptr msg_ptr(&msg, msg_release_struct);
if (message->is_id_set()) { // id is set - the message exists in database
msg_message_id_t id = (msg_message_id_t) message->getId();
- err = msg_get_message(handle, id, msg, sendOpt);
+ msg_struct_t send_opt = msg_create_struct(MSG_STRUCT_SENDOPT);
+ std::unique_ptr send_opt_ptr(&send_opt, msg_release_struct);
+ err = msg_get_message(handle, id, msg, send_opt);
if (err != MSG_SUCCESS) {
- msg_release_struct(&sendOpt);
- msg_release_struct(&msg);
LoggerD("msg_get_message() Fail [%d]", err);
return PlatformResult(ErrorCode::UNKNOWN_ERR, "msg_get_message() Fail");
}
@@ -839,8 +840,6 @@ PlatformResult Message::convertPlatformShortMessageToStruct(Message* message,
// Set message type to SMS
if (MSG_SUCCESS
!= msg_set_int_value(msg, MSG_MESSAGE_TYPE_INT, MSG_TYPE_SMS)) {
- msg_release_struct(&sendOpt);
- msg_release_struct(&msg);
LoggerE("Set SMS type error");
return PlatformResult(ErrorCode::UNKNOWN_ERR, "Set SMS type error");
}
@@ -848,14 +847,11 @@ PlatformResult Message::convertPlatformShortMessageToStruct(Message* message,
// Set message type to MMS
if (MSG_SUCCESS
!= msg_set_int_value(msg, MSG_MESSAGE_TYPE_INT, MSG_TYPE_MMS)) {
- msg_release_struct(&sendOpt);
- msg_release_struct(&msg);
LoggerE("Set MMS type error");
return PlatformResult(ErrorCode::UNKNOWN_ERR, "Set MMS type error");
}
}
}
- msg_release_struct(&sendOpt);
int type;
msg_get_int_value(msg, MSG_MESSAGE_TYPE_INT, &type);
@@ -1014,7 +1010,6 @@ PlatformResult Message::convertPlatformShortMessageToStruct(Message* message,
if (ret.IsError()) return ret;
}
else {
- msg_release_struct(&msg);
LoggerE("Message(%p): Invalid message type", message);
return PlatformResult(ErrorCode::INVALID_VALUES_ERR, "Invalid message type");
}
@@ -1059,6 +1054,7 @@ PlatformResult Message::convertPlatformShortMessageToStruct(Message* message,
LoggerD("End");
*result_msg = msg;
+ msg_ptr.release(); // release ownership
return PlatformResult(ErrorCode::NO_ERROR);
}