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); }