diff options
author | Kyeonghun Lee <kh9090.lee@samsung.com> | 2016-12-02 13:09:40 +0900 |
---|---|---|
committer | Kyeonghun Lee <kh9090.lee@samsung.com> | 2016-12-02 13:09:40 +0900 |
commit | e6354f8353c5c51965c798ae1c5bee61b24d1e13 (patch) | |
tree | 5b142e877c8d7386fac74d0ba644857b545cdaa4 | |
parent | 113f989b28d05ce50a7ff57151f183055edc2f8a (diff) | |
parent | 96d5af1cf1cb81f097ceea28f143065666f9b2d4 (diff) | |
download | msg-service-e6354f8353c5c51965c798ae1c5bee61b24d1e13.tar.gz msg-service-e6354f8353c5c51965c798ae1c5bee61b24d1e13.tar.bz2 msg-service-e6354f8353c5c51965c798ae1c5bee61b24d1e13.zip |
Merge branch 'tizen_3.0' into tizensubmit/tizen/20161202.035430accepted/tizen/wearable/20161207.025349accepted/tizen/mobile/20161207.025242accepted/tizen/ivi/20161207.025437accepted/tizen/common/20161202.233227
Change-Id: I73ee592a286eb57a48017f6382cd3ad59f7db086
Signed-off-by: Kyeonghun Lee <kh9090.lee@samsung.com>
-rwxr-xr-x | framework/transaction-manager/MsgCmdHandlerStorage.cpp | 9 | ||||
-rwxr-xr-x | framework/transaction-manager/MsgCmdHandlerTransport.cpp | 5 | ||||
-rw-r--r-- | manager/inc/msg-manager-notification.h | 3 | ||||
-rw-r--r-- | manager/src/msg-manager-notification.cpp | 38 | ||||
-rw-r--r-- | manager/src/msg-manager-sound.cpp | 14 | ||||
-rwxr-xr-x | packaging/msg-service.spec | 2 | ||||
-rwxr-xr-x | vobject-engine/VCard.c | 50 | ||||
-rwxr-xr-x | vobject-engine/VMessage.c | 41 |
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, ¬i_id); break; + case MSG_MGR_NOTI_TYPE_STORAGE_FULL: + vconf_get_int(STORAGE_FULL_NOTI_PRIV_ID, ¬i_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); |