From: david_kim31 Date: Tue, 19 Mar 2013 14:31:31 +0000 (+0900) Subject: fix memory leak X-Git-Tag: accepted/tizen_2.1/20130425.034849~256^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=459c3063b1b2c34d6421e0026bd2afdc9181cbe2;p=framework%2Fosp%2Fappfw.git fix memory leak Change-Id: I4544356de1d1413c583de43efccebde2239eec44 Signed-off-by: david_kim31 --- diff --git a/src/app/FApp_AppImpl.cpp b/src/app/FApp_AppImpl.cpp index 0ae69f0..32a13af 100644 --- a/src/app/FApp_AppImpl.cpp +++ b/src/app/FApp_AppImpl.cpp @@ -90,6 +90,18 @@ static const int _DATACONTROL_PACKET_INDEX_COLUMNLIST = 6; static const int _DATACONTROL_PACKET_INDEX_INSERTMAP = 6; static const int _DATACONTROL_PACKET_INDEX_UPDATEMAP = 6; +struct charDeleter +{ + void operator()(char* pValue) + { + if(pValue != null) + { + free(pValue); + pValue = null; + } + } +}; + _AppImpl::_AppImpl(App* pApp) : __pCheckpointEventListener(null) , __pSqlDataControlProviderEventListener(null) @@ -318,35 +330,27 @@ _AppImpl::OnService(service_s* service, void* user_data) // ptr to member function (pAppImpl->*pAppImpl->__pRequestHandler)(service, req, handler); - char* pOperation; + std::unique_ptr pOperation(null); + char* pBuf = null; - int errVal = service_get_operation(service, &pOperation); + int errVal = service_get_operation(service, &pBuf); + pOperation.reset(pBuf); - if((errVal == SERVICE_ERROR_NONE) && (!strcmp(pOperation, "osp.appsvc.operation.ALARM"))) + if((errVal == SERVICE_ERROR_NONE) && (!strcmp((const char*)pOperation.get(), "osp.appsvc.operation.ALARM"))) { - char* pAlarmId = null; + std::unique_ptr pAlarmId(null); + char* pBuf = null; - errVal = service_get_extra_data(service, SERVICE_DATA_ALARM_ID, &pAlarmId); + errVal = service_get_extra_data(service, SERVICE_DATA_ALARM_ID, &pBuf); + pAlarmId.reset(pBuf); SysTryReturnVoidResult(NID_SYS, errVal == SERVICE_ERROR_NONE, E_SYSTEM, "It is failed to get reserved alarm id."); - int alarmId = atoi(pAlarmId); + int alarmId = atoi((const char*)pAlarmId.get()); _AlarmManager* pAlarmManager = _AlarmManager::GetInstance(); pAlarmManager->OnAlarmExpired(alarmId); - if(pAlarmId != null) - { - free(pAlarmId); - } - - free(pOperation); - return; } - - if(pOperation) - { - free(pOperation); - } } pAppImpl->__pIAppImpl->OnService(service, initialLaunch);