summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyeonghun Lee <kh9090.lee@samsung.com>2016-12-02 13:09:40 +0900
committerKyeonghun Lee <kh9090.lee@samsung.com>2016-12-02 13:09:40 +0900
commite6354f8353c5c51965c798ae1c5bee61b24d1e13 (patch)
tree5b142e877c8d7386fac74d0ba644857b545cdaa4
parent113f989b28d05ce50a7ff57151f183055edc2f8a (diff)
parent96d5af1cf1cb81f097ceea28f143065666f9b2d4 (diff)
downloadmsg-service-e6354f8353c5c51965c798ae1c5bee61b24d1e13.tar.gz
msg-service-e6354f8353c5c51965c798ae1c5bee61b24d1e13.tar.bz2
msg-service-e6354f8353c5c51965c798ae1c5bee61b24d1e13.zip
Change-Id: I73ee592a286eb57a48017f6382cd3ad59f7db086 Signed-off-by: Kyeonghun Lee <kh9090.lee@samsung.com>
-rwxr-xr-xframework/transaction-manager/MsgCmdHandlerStorage.cpp9
-rwxr-xr-xframework/transaction-manager/MsgCmdHandlerTransport.cpp5
-rw-r--r--manager/inc/msg-manager-notification.h3
-rw-r--r--manager/src/msg-manager-notification.cpp38
-rw-r--r--manager/src/msg-manager-sound.cpp14
-rwxr-xr-xpackaging/msg-service.spec2
-rwxr-xr-xvobject-engine/VCard.c50
-rwxr-xr-xvobject-engine/VMessage.c41
8 files changed, 132 insertions, 30 deletions
diff --git a/framework/transaction-manager/MsgCmdHandlerStorage.cpp b/framework/transaction-manager/MsgCmdHandlerStorage.cpp
index cbae6c5..e0e30da 100755
--- a/framework/transaction-manager/MsgCmdHandlerStorage.cpp
+++ b/framework/transaction-manager/MsgCmdHandlerStorage.cpp
@@ -22,6 +22,7 @@
#include "MsgException.h"
#include "MsgCppTypes.h"
#include "MsgUtilFunction.h"
+#include "MsgUtilStorage.h"
#include "MsgStorageHandler.h"
#include "MsgPluginManager.h"
#include "MsgTransManager.h"
@@ -65,6 +66,10 @@ int MsgAddMessageHandler(const MSG_CMD_S *pCmd, char **ppEvent)
return 0;
}
+ err = MsgStocheckMemoryStatus();
+ if (err != MSG_SUCCESS)
+ return MsgMakeEvent(NULL, 0, MSG_EVENT_ADD_MSG, err, (void**)ppEvent);
+
char* encodedData = NULL;
unique_ptr<char*, void(*)(char**)> buf(&encodedData, unique_ptr_deleter);
@@ -144,6 +149,10 @@ int MsgAddSyncMLMessageHandler(const MSG_CMD_S *pCmd, char **ppEvent)
return 0;
}
+ err = MsgStocheckMemoryStatus();
+ if (err != MSG_SUCCESS)
+ return MsgMakeEvent(NULL, 0, MSG_EVENT_ADD_SYNCML_MSG, err, (void**)ppEvent);
+
char* encodedData = NULL;
unique_ptr<char*, void(*)(char**)> buf(&encodedData, unique_ptr_deleter);
diff --git a/framework/transaction-manager/MsgCmdHandlerTransport.cpp b/framework/transaction-manager/MsgCmdHandlerTransport.cpp
index 85eb318..8ad9f7c 100755
--- a/framework/transaction-manager/MsgCmdHandlerTransport.cpp
+++ b/framework/transaction-manager/MsgCmdHandlerTransport.cpp
@@ -51,6 +51,10 @@ int MsgSubmitReqHandler(const MSG_CMD_S *pCmd, char **ppEvent)
return 0;
}
+ err = MsgStocheckMemoryStatus();
+ if (err != MSG_SUCCESS)
+ return MsgMakeEvent(NULL, 0, MSG_EVENT_SUBMIT_REQ, err, (void**)ppEvent);
+
int ret[3];
int eventSize = 0;
@@ -68,7 +72,6 @@ int MsgSubmitReqHandler(const MSG_CMD_S *pCmd, char **ppEvent)
MsgDecodeMsgInfo((char *)(pCmd->cmdData+sizeof(msg_request_id_t)+sizeof(MSG_PROXY_INFO_S)), &reqInfo.msgInfo, &reqInfo.sendOptInfo);
-
if (reqInfo.msgInfo.msgType.mainType == MSG_MMS_TYPE
&& reqInfo.msgInfo.msgType.subType == MSG_SENDREQ_MMS) {
int fd = 0;
diff --git a/manager/inc/msg-manager-notification.h b/manager/inc/msg-manager-notification.h
index 8837c76..829b076 100644
--- a/manager/inc/msg-manager-notification.h
+++ b/manager/inc/msg-manager-notification.h
@@ -73,6 +73,7 @@
#define MSG_READ_REPORT_STATUS_ICON "reserved://indicator/icons/read_report_message"
#define MSG_VOICE_MSG_STATUS_ICON "reserved://indicator/icons/notify_voicemail"
#define MSG_SIM_FULL_STATUS_ICON "reserved://indicator/icons/sim_card_full"
+#define MSG_STORAGE_FULL_STATUS_ICON "/usr/apps/org.tizen.indicator/res/resource/icons/Storage/b03_storage_memoryfull.png"
#ifndef TIZEN_I586_ENABLED
/* system string */
@@ -186,6 +187,7 @@
#define SIM_MSG_NOTI_PRIV_ID "db/private/msg-service/sim_msg_noti_priv_id"
#define MSG_SENTFAIL_NOTI_ID "db/private/msg-service/sentfail_noti_id"
#define SIM_FULL_NOTI_PRIV_ID "db/private/msg-service/sim_full_noti_id"
+#define STORAGE_FULL_NOTI_PRIV_ID "db/private/msg-service/storage_full_noti_id"
#define MSG_SETTING_NOTIFICATION "db/private/msg-service/general/notification"
#define MSG_SETTING_VIBRATION "db/private/msg-service/general/vibration"
@@ -245,6 +247,7 @@ enum _msg_mgr_notification_type_e {
MSG_MGR_NOTI_TYPE_MMS_READ_REPORT_SENT,
MSG_MGR_NOTI_TYPE_SIM_FULL,
+ MSG_MGR_NOTI_TYPE_STORAGE_FULL,
};
diff --git a/manager/src/msg-manager-notification.cpp b/manager/src/msg-manager-notification.cpp
index 23e2d34..b99c753 100644
--- a/manager/src/msg-manager-notification.cpp
+++ b/manager/src/msg-manager-notification.cpp
@@ -807,6 +807,10 @@ void setProperty(notification_h noti_h, MSG_MGR_NOTI_INFO_S *noti_info)
notification_set_launch_option(noti_h, NOTIFICATION_LAUNCH_OPTION_APP_CONTROL, noti_info->svc_h);
break;
}
+ case MSG_MGR_NOTI_TYPE_STORAGE_FULL: {
+ notification_set_launch_option(noti_h, NOTIFICATION_LAUNCH_OPTION_APP_CONTROL, noti_info->svc_h);
+ break;
+ }
case MSG_MGR_NOTI_TYPE_VOICE_1:
case MSG_MGR_NOTI_TYPE_VOICE_2:
case MSG_MGR_NOTI_TYPE_MWI:
@@ -1058,6 +1062,12 @@ void setText(notification_h noti_h, MSG_MGR_NOTI_INFO_S *noti_info)
setNotiText(noti_h, NOTIFICATION_TEXT_TYPE_CONTENT, "Not enough memory. Delete some items.", SMS_MESSAGE_MEMORY_FULL);
break;
}
+ case MSG_MGR_NOTI_TYPE_STORAGE_FULL: {
+ setNotiText(noti_h, NOTIFICATION_TEXT_TYPE_TITLE, "Not enough space", NULL);
+ setNotiText(noti_h, NOTIFICATION_TEXT_TYPE_CONTENT, "Couldn't receive new messages", NULL);
+ setNotiTime(noti_h, time(NULL));
+ break;
+ }
default:
MSG_MGR_DEBUG("No matching type [%d]", noti_info->type);
break;
@@ -1170,6 +1180,17 @@ void setIcon(notification_h noti_h, MSG_MGR_NOTI_INFO_S *noti_info)
setNotiImage(noti_h, NOTIFICATION_IMAGE_TYPE_ICON, MSG_NORMAL_ICON_PATH);
setNotiImage(noti_h, NOTIFICATION_IMAGE_TYPE_ICON_FOR_INDICATOR, MSG_SIM_FULL_STATUS_ICON);
break;
+ case MSG_MGR_NOTI_TYPE_STORAGE_FULL: {
+ char *msg_icon_path = NULL;
+ if (getAppIcon(MSG_DEFAULT_APP_ID, &msg_icon_path) == 0) {
+ setNotiImage(noti_h, NOTIFICATION_IMAGE_TYPE_ICON, msg_icon_path);
+ g_free(msg_icon_path);
+ } else {
+ MSG_MGR_ERR("fail to get message-app icon");
+ }
+ setNotiImage(noti_h, NOTIFICATION_IMAGE_TYPE_ICON_FOR_INDICATOR, MSG_STORAGE_FULL_STATUS_ICON);
+ break;
+ }
default:
MSG_MGR_DEBUG("No matching type for MsgNotiSetImage [%d]", noti_info->type);
break;
@@ -2355,6 +2376,7 @@ int getLatestMsgInfo(MSG_MGR_NOTI_INFO_S *noti_info, bool isForInstantMessage)
break;
}
case MSG_MGR_NOTI_TYPE_SIM_FULL:
+ case MSG_MGR_NOTI_TYPE_STORAGE_FULL:
break;
default:
MSG_MGR_DEBUG("No matching type [%d]", noti_info->type);
@@ -2438,6 +2460,9 @@ int getPrivId(msg_mgr_notification_type_t noti_type, int sim_idx)
case MSG_MGR_NOTI_TYPE_SIM_FULL:
vconf_get_int(SIM_FULL_NOTI_PRIV_ID, &noti_id);
break;
+ case MSG_MGR_NOTI_TYPE_STORAGE_FULL:
+ vconf_get_int(STORAGE_FULL_NOTI_PRIV_ID, &noti_id);
+ break;
default:
MSG_MGR_DEBUG("No matching noti type [%d]", noti_type);
break;
@@ -2498,6 +2523,9 @@ void updatePrivId(msg_mgr_notification_type_t noti_type, int noti_id, int sim_id
case MSG_MGR_NOTI_TYPE_SIM_FULL:
err = vconf_set_int(SIM_FULL_NOTI_PRIV_ID, noti_id);
break;
+ case MSG_MGR_NOTI_TYPE_STORAGE_FULL:
+ err = vconf_set_int(STORAGE_FULL_NOTI_PRIV_ID, noti_id);
+ break;
default:
MSG_MGR_DEBUG("No matching type [%d]", noti_type);
break;
@@ -2828,6 +2856,10 @@ void createInfoData(MSG_MGR_NOTI_INFO_S *noti_info, msg_mgr_active_notification_
noti_info->applist = NOTIFICATION_DISPLAY_APP_NOTIFICATION_TRAY|NOTIFICATION_DISPLAY_APP_INDICATOR;
break;
}
+ case MSG_MGR_NOTI_TYPE_STORAGE_FULL: {
+ noti_info->layout = NOTIFICATION_LY_NOTI_EVENT_SINGLE;
+ noti_info->applist = NOTIFICATION_DISPLAY_APP_NOTIFICATION_TRAY|NOTIFICATION_DISPLAY_APP_INDICATOR|NOTIFICATION_DISPLAY_APP_TICKER;
+ }
default:
break;
}
@@ -3187,6 +3219,7 @@ int MsgMgrInsertTicker(const char* pTickerMsg, const char* pLocaleTickerMsg, boo
if (g_strcmp0(pLocaleTickerMsg, SMS_MESSAGE_SENDING_FAIL) != 0 &&
g_strcmp0(pLocaleTickerMsg, SENDING_MULTIMEDIA_MESSAGE_FAILED) != 0 &&
+ g_strcmp0(pLocaleTickerMsg, SMS_MESSAGE_MEMORY_FULL) != 0 &&
g_strcmp0(pLocaleTickerMsg, MESSAGE_RETRIEVED) != 0) {
if (g_strcmp0(pLocaleTickerMsg, notiMsg) == 0) {
notification_status_message_post(pTickerMsg);
@@ -3217,6 +3250,11 @@ int MsgMgrInsertTicker(const char* pTickerMsg, const char* pLocaleTickerMsg, boo
MSG_MGR_DEBUG("MsgRefreshSimFullNoti err=[%d]", err);
}
#endif
+ } else if (g_strcmp0(pLocaleTickerMsg, SMS_MESSAGE_MEMORY_FULL) == 0) {
+ err = MsgMgrRefreshNotification(MSG_MGR_NOTI_TYPE_STORAGE_FULL, true, MSG_MGR_ACTIVE_NOTI_TYPE_NONE);
+ if (err != 0) {
+ MSG_MGR_DEBUG("MsgRefreshFailedNoti err=[%d]", err);
+ }
} else {
MsgMgrSoundPlayStart(NULL, MSG_MGR_SOUND_PLAY_DEFAULT);
}
diff --git a/manager/src/msg-manager-sound.cpp b/manager/src/msg-manager-sound.cpp
index d111b24..16ce016 100644
--- a/manager/src/msg-manager-sound.cpp
+++ b/manager/src/msg-manager-sound.cpp
@@ -105,14 +105,12 @@ static void MsgMgrSoundPlayeInterruptedCallback(player_interrupted_code_e code,
MsgMgrSoundPlayStop();
}
-static void MsgStreamFocusCallback(sound_stream_info_h stream_info, sound_stream_focus_change_reason_e reason_for_change, const char *additional_info, void *user_data)
+static void MsgStreamFocusCallback(sound_stream_info_h stream_info, sound_stream_focus_mask_e focus_mask, sound_stream_focus_state_e focus_state,
+ sound_stream_focus_change_reason_e reason_for_change, int sound_behavior, const char *additional_info, void *user_data)
{
MSG_MGR_DEBUG("MsgStreamFocusCallback called, reason_for_change [%d], additional_info [%s]", reason_for_change, additional_info);
- sound_stream_focus_state_e playback_focus_state = SOUND_STREAM_FOCUS_STATE_ACQUIRED;
-
- sound_manager_get_focus_state(stream_info, &playback_focus_state, NULL);
- if (playback_focus_state == SOUND_STREAM_FOCUS_STATE_RELEASED) {
+ if ((focus_mask == SOUND_STREAM_FOCUS_FOR_PLAYBACK) && (focus_state == SOUND_STREAM_FOCUS_STATE_RELEASED)) {
MSG_MGR_DEBUG("sound stream focus released");
MsgMgrSoundPlayStop();
}
@@ -166,7 +164,7 @@ void MsgMgrGetRingtonePath(char *userRingtonePath, char **msg_tone_file_path_p)
}
memset(msg_tone_file_path, 0x00, sizeof(char)*(MSG_FILEPATH_LEN_MAX+1));
-#if MSG_MGR_DRM_SUPPORT
+#if 0 /* MSG_DRM_SUPPORT */
if ((tmpFilePath == NULL || MsgMgrGetFileSize(tmpFilePath) < 1) || /* wrong ringtone file path */
(MsgDrmIsDrmFile(tmpFilePath) && !MsgDrmCheckRingtone(tmpFilePath))) { /* check DRM */
#endif
@@ -465,7 +463,7 @@ int MsgMgrStreamStart(MSG_MGR_SOUND_TYPE_T soundType)
return err;
}
- err = sound_manager_acquire_focus(g_stream_info, SOUND_STREAM_FOCUS_FOR_PLAYBACK, NULL);
+ err = sound_manager_acquire_focus(g_stream_info, SOUND_STREAM_FOCUS_FOR_PLAYBACK, SOUND_BEHAVIOR_NONE, NULL);
pthread_mutex_unlock(&muStream);
MSG_MGR_END();
@@ -479,7 +477,7 @@ void MsgMgrStreamStop()
pthread_mutex_lock(&muStream);
if (g_stream_info != NULL) {
- int err = sound_manager_release_focus(g_stream_info, SOUND_STREAM_FOCUS_FOR_PLAYBACK, NULL);
+ int err = sound_manager_release_focus(g_stream_info, SOUND_STREAM_FOCUS_FOR_PLAYBACK, SOUND_BEHAVIOR_NONE, NULL);
if (err != SOUND_MANAGER_ERROR_NONE)
MSG_MGR_DEBUG("sound_manager_release_focus() Failed : %d", err);
diff --git a/packaging/msg-service.spec b/packaging/msg-service.spec
index 4f324a2..5562af5 100755
--- a/packaging/msg-service.spec
+++ b/packaging/msg-service.spec
@@ -1,5 +1,5 @@
Name: msg-service
-Version: 1.0.4
+Version: 1.0.5
Release: 2
License: Apache-2.0
Summary: Messaging Framework Library
diff --git a/vobject-engine/VCard.c b/vobject-engine/VCard.c
index 72735e4..15f55df 100755
--- a/vobject-engine/VCard.c
+++ b/vobject-engine/VCard.c
@@ -1072,6 +1072,7 @@ char* vcard_encode(VTree *pVCardRaw)
{
VDATA_TRACE_BEGINE
char* pVCardRes = NULL;
+ char* pTempVCard = NULL;
VObject * pTmpObj = NULL;
char* pTemp = NULL;
int len;
@@ -1118,13 +1119,15 @@ char* vcard_encode(VTree *pVCardRaw)
if ((pTemp = __VCardTypeEncode(pTmpObj, pszCardTypeList[pTmpObj->property])) != NULL) {
len = strlen(pTemp);
total += len + sizeof(char) * 10;
- if ((pVCardRes = (char*)realloc(pVCardRes, total)) == NULL) {
+ if ((pTempVCard = (char*)realloc(pVCardRes, total)) == NULL) {
VDATA_TRACE("vcard_encode():realloc failed\n");
VFREE(pTemp);
pTemp = NULL;
+ VFREE(pVCardRes);
VDATA_TRACE_END
return NULL;
}
+ pVCardRes = pTempVCard;
if (strncmp(pTemp, "VERSION", strlen("VERSION")) != 0)
g_strlcat(pVCardRes, pTemp, total - strlen(pVCardRes));
@@ -1142,11 +1145,13 @@ char* vcard_encode(VTree *pVCardRaw)
}
total += sizeof(char) * 12;
- if ((pVCardRes = (char *)realloc(pVCardRes, total)) == NULL) {
+ if ((pTempVCard = (char *)realloc(pVCardRes, total)) == NULL) {
VDATA_TRACE("vcard_encode:realloc failed\n");
+ VFREE(pVCardRes);
VDATA_TRACE_END
return NULL;
}
+ pVCardRes = pTempVCard;
g_strlcat(pVCardRes, "END:VCARD\r\n", total - strlen(pVCardRes));
VDATA_TRACE_END
return pVCardRes;
@@ -1195,6 +1200,7 @@ __VCardTypeEncode(VObject *pTypeObj, char *pType)
int len;
char* pTemp = NULL;
char* szTypeValue = NULL;
+ char* szTemp = NULL;
int i;
int enc = 0;
char* pEncode = NULL;
@@ -1227,21 +1233,27 @@ __VCardTypeEncode(VObject *pTypeObj, char *pType)
pTemp = __VCardParamEncode(pTypeObj, &enc);
if (pTemp != NULL) {
len = strlen(pTemp);
- if ((szTypeValue = (char *)realloc(szTypeValue, (total += len))) == NULL) {
+ if ((szTemp = (char *)realloc(szTypeValue, (total += len))) == NULL) {
VDATA_TRACE("__VCardTypeEncode():realloc failed\n");
VFREE(pTemp);
- pTemp = NULL
- VDATA_TRACE_END;
+ pTemp = NULL;
+ VFREE(szTypeValue);
+ VDATA_TRACE_END
return NULL;
+ } else {
+ szTypeValue = szTemp;
}
g_strlcat(szTypeValue, pTemp, total - strlen(szTypeValue));
VFREE(pTemp);
pTemp = NULL;
}
- if ((szTypeValue = (char *)realloc(szTypeValue, (total += 2))) == NULL) {
+ if ((szTemp = (char *)realloc(szTypeValue, (total += 2))) == NULL) {
+ VFREE(szTypeValue);
VDATA_TRACE_END
return NULL;
+ } else {
+ szTypeValue = szTemp;
}
g_strlcat(szTypeValue, ":", total - strlen(szTypeValue));
@@ -1328,21 +1340,27 @@ __VCardTypeEncode(VObject *pTypeObj, char *pType)
}
}
- if ((pRes = (char *)realloc(pRes, strlen(pRes) + 3)) == NULL) {
+ if ((szTemp = (char *)realloc(pRes, strlen(pRes) + 3)) == NULL) {
VFREE(pEncode);
VFREE(szTypeValue);
+ VFREE(pRes);
VDATA_TRACE_END
return NULL;
+ } else {
+ pRes = szTemp;
}
g_strlcat(pRes, "\r\n", 2);
len = strlen(pRes);
- if ((szTypeValue = (char *)realloc(szTypeValue, (total += (len+3)))) == NULL) {
+ if ((szTemp = (char *)realloc(szTypeValue, (total += (len+3)))) == NULL) {
VFREE(pEncode);
VFREE(pRes);
+ VFREE(szTypeValue);
VDATA_TRACE_END
return NULL;
+ } else {
+ szTypeValue = szTemp;
}
g_strlcat(szTypeValue, pRes, total - strlen(szTypeValue));
@@ -1373,6 +1391,7 @@ __VCardParamEncode(VObject* pTypeObj, int* pEnc)
int shift = 0;
bool bSupported;
char* szParam = NULL;
+ char* szTemp = NULL;
VParam* pTemp = NULL;
ValueObj* pList = NULL;
@@ -1396,9 +1415,12 @@ __VCardParamEncode(VObject* pTypeObj, int* pEnc)
bSupported = false;
/** Expand szParam string. For appending.*/
- if ((szParam = (char *)realloc(szParam, len += 15)) == NULL) {
+ if ((szTemp = (char *)realloc(szParam, len += 15)) == NULL) {
+ VFREE(szParam);
VDATA_TRACE_END
return NULL;
+ } else {
+ szParam = szTemp;
}
/** appending paramter name. */
@@ -1428,9 +1450,12 @@ __VCardParamEncode(VObject* pTypeObj, int* pEnc)
pList = pCharsetList; bSupported = true;
break;
default:
- if ((szParam = (char*)realloc(szParam, 5)) == NULL) {
+ if ((szTemp = (char*)realloc(szParam, 5)) == NULL) {
+ VFREE(szParam);
VDATA_TRACE_END
return NULL;
+ } else {
+ szParam = szTemp;
}
g_strlcat(szParam, "NONE", 5 - strlen(szParam));
}
@@ -1441,9 +1466,12 @@ __VCardParamEncode(VObject* pTypeObj, int* pEnc)
for (i = 0, sNum = 0x00000001; i < shift; i++) {
if (pTemp->paramValue & sNum) {
- if ((szParam = (char *)realloc(szParam, (len += (strlen(pList[i].szName) + 2)))) == NULL) {
+ if ((szTemp = (char *)realloc(szParam, (len += (strlen(pList[i].szName) + 2)))) == NULL) {
+ VFREE(szParam);
VDATA_TRACE_END
return NULL;
+ } else {
+ szParam = szTemp;
}
g_strlcat(szParam, pList[i].szName, len - strlen(szParam));
diff --git a/vobject-engine/VMessage.c b/vobject-engine/VMessage.c
index 50da899..2e0aeef 100755
--- a/vobject-engine/VMessage.c
+++ b/vobject-engine/VMessage.c
@@ -1247,6 +1247,7 @@ __VMsgTypeEncode(VObject *pTypeObj, char *pType)
int len;
char* pTemp = NULL;
char* szTypeValue = NULL;
+ char* szTemp = NULL;
int i;
int enc = 0;
char* pEncode = NULL;
@@ -1268,21 +1269,27 @@ __VMsgTypeEncode(VObject *pTypeObj, char *pType)
pTemp = __VMsgParamEncode(pTypeObj, &enc);
if (pTemp != NULL) {
len = strlen(pTemp);
- if ((szTypeValue = (char *)realloc(szTypeValue, (total += len))) == NULL) {
+ if ((szTemp = (char *)realloc(szTypeValue, (total += len))) == NULL) {
VDATA_TRACE("__VMsgTypeEncode():realloc failed\n");
VFREE(pTemp);
- pTemp = NULL
- VDATA_TRACE_END;
+ pTemp = NULL;
+ VFREE(szTypeValue);
+ VDATA_TRACE_END
return NULL;
+ } else {
+ szTypeValue = szTemp;
}
g_strlcat(szTypeValue, pTemp, len);
VFREE(pTemp);
pTemp = NULL;
}
- if ((szTypeValue = (char *)realloc(szTypeValue, (total += 2))) == NULL) {
+ if ((szTemp = (char *)realloc(szTypeValue, (total += 2))) == NULL) {
+ VFREE(szTypeValue);
VDATA_TRACE_END
return NULL;
+ } else {
+ szTypeValue = szTemp;
}
g_strlcat(szTypeValue, ":", 2);
@@ -1369,21 +1376,27 @@ __VMsgTypeEncode(VObject *pTypeObj, char *pType)
}
}
- if ((pRes = (char *)realloc(pRes, strlen(pRes) + 3)) == NULL) {
+ if ((szTemp = (char *)realloc(pRes, strlen(pRes) + 3)) == NULL) {
VFREE(pEncode);
VFREE(szTypeValue);
+ VFREE(pRes);
VDATA_TRACE_END
return NULL;
+ } else {
+ pRes = szTemp;
}
g_strlcat(pRes, "\r\n", strlen(pRes) + 2);
len = strlen(pRes);
- if ((szTypeValue = (char *)realloc(szTypeValue, (total += (len+3)))) == NULL) {
+ if ((szTemp = (char *)realloc(szTypeValue, (total += (len+3)))) == NULL) {
VFREE(pEncode);
VFREE(pRes);
+ VFREE(szTypeValue);
VDATA_TRACE_END
return NULL;
+ } else {
+ szTypeValue = szTemp;
}
g_strlcat(szTypeValue, pRes, total - 1);
@@ -1415,6 +1428,7 @@ __VMsgParamEncode(VObject* pTypeObj, int* pEnc)
int shift = 0;
bool bSupported;
char* szParam = NULL;
+ char* szTemp = NULL;
VParam* pTemp = NULL;
ValueObj* pList = NULL;
@@ -1438,9 +1452,12 @@ __VMsgParamEncode(VObject* pTypeObj, int* pEnc)
bSupported = false;
/** Expand szParam string. For appending.*/
- if ((szParam = (char *)realloc(szParam, len += 15)) == NULL) {
+ if ((szTemp = (char *)realloc(szParam, len += 15)) == NULL) {
+ VFREE(szParam);
VDATA_TRACE_END
return NULL;
+ } else {
+ szParam = szTemp;
}
/** appending paramter name. */
@@ -1470,9 +1487,12 @@ __VMsgParamEncode(VObject* pTypeObj, int* pEnc)
pList = pMsgCharsetList; bSupported = true;
break;
default:
- if ((szParam = (char*)realloc(szParam, 5)) == NULL) {
+ if ((szTemp = (char*)realloc(szParam, 5)) == NULL) {
+ VFREE(szParam);
VDATA_TRACE_END
return NULL;
+ } else {
+ szParam = szTemp;
}
g_strlcat(szParam, "NONE", strlen("NONE"));
}
@@ -1483,9 +1503,12 @@ __VMsgParamEncode(VObject* pTypeObj, int* pEnc)
for (i = 0, sNum = 0x00000001; i < shift; i++) {
if (pList[pTemp->paramValue].flag & sNum) {
- if ((szParam = (char *)realloc(szParam, (len += (strlen(pList[i].szName) + 2)))) == NULL) {
+ if ((szTemp = (char *)realloc(szParam, (len += (strlen(pList[i].szName) + 2)))) == NULL) {
+ VFREE(szParam);
VDATA_TRACE_END
return NULL;
+ } else {
+ szParam = szTemp;
}
g_strlcat(szParam, pList[i].szName, len);