From 904e9176848045458828c2762cc30a4c23332b69 Mon Sep 17 00:00:00 2001 From: Hokwon Song Date: Tue, 21 May 2013 11:01:12 +0900 Subject: [PATCH] Fixed the memory leak Change-Id: I497fc0ac95292ce41a74e2fe2d95bb1f0c35cd83 Signed-off-by: Hokwon Song --- src/text/FText_EncodingCore.cpp | 28 ----------------------- src/text/FText_EncodingImpl.cpp | 13 +++++------ src/text/FText_GsmEncodingCore.cpp | 25 +-------------------- src/text/FText_GsmEncodingCore.h | 1 - src/text/FText_IcuEncodingCore.cpp | 38 -------------------------------- src/text/FText_IcuEncodingCore.h | 1 - src/text/FText_Iso885916EncodingCore.cpp | 25 +-------------------- src/text/FText_Iso885916EncodingCore.h | 1 - src/text/FText_Ucs2EncodingCore.cpp | 31 ++------------------------ src/text/FText_Ucs2EncodingCore.h | 1 - src/text/inc/FText_EncodingCore.h | 4 ---- 11 files changed, 9 insertions(+), 159 deletions(-) diff --git a/src/text/FText_EncodingCore.cpp b/src/text/FText_EncodingCore.cpp index 5e9d226..2e6261b 100644 --- a/src/text/FText_EncodingCore.cpp +++ b/src/text/FText_EncodingCore.cpp @@ -79,34 +79,6 @@ _EncodingCore::GetEncodingCoreN(const Tizen::Base::String& encodingFrom, const T return null; } -IList* -_EncodingCore::GetAvailableEncodingsN(void) -{ - ClearLastResult(); - result r = E_SUCCESS; - - unique_ptr pList(new (std::nothrow) LinkedList()); - SysTryReturn(NID_TEXT, pList != null, null, E_OUT_OF_MEMORY, "[%s] Memory allocation failed", GetErrorMessage(E_OUT_OF_MEMORY)); - - _IcuEncodingCore icuConverter; - _GsmEncodingCore gsmConverter; - _Ucs2EncodingCore ucs2Converter; - _Iso885916EncodingCore iso885916Converter; - - r = icuConverter.GetAvailableEncodingsN(pList.get()); - SysTryReturn(NID_TEXT, !IsFailed(r), null, r, "[%s] Available encoding list is empty. List allocation failed.", GetErrorMessage(r)); - - r = gsmConverter.GetAvailableEncodingsN(pList.get()); - SysTryReturn(NID_TEXT, !IsFailed(r), null, r, "[%s] Available encoding list is empty. List allocation failed.", GetErrorMessage(r)); - - r = ucs2Converter.GetAvailableEncodingsN(pList.get()); - SysTryReturn(NID_TEXT, !IsFailed(r), null, r, "[%s] Available encoding list is empty. List allocation failed.", GetErrorMessage(r)); - - r = iso885916Converter.GetAvailableEncodingsN(pList.get()); - SysTryReturn(NID_TEXT, !IsFailed(r), null, r, "[%s] Available encoding list is empty. List allocation failed.", GetErrorMessage(r)); - - return pList.release(); -} byte* _EncodingCore::ConvertN(_EncodingCore* pDstConverter, const byte* pSrc, int srcLength, int& retLength) diff --git a/src/text/FText_EncodingImpl.cpp b/src/text/FText_EncodingImpl.cpp index 8a4c95e..92471e2 100644 --- a/src/text/FText_EncodingImpl.cpp +++ b/src/text/FText_EncodingImpl.cpp @@ -537,21 +537,18 @@ _EncodingImpl::GetAvailableEncodingsImplN(void) ClearLastResult(); result r = E_SUCCESS; - std::unique_ptr pList(new (std::nothrow) LinkedList()); + std::unique_ptr< LinkedList > pList(new (std::nothrow) LinkedList(SingleObjectDeleter)); SysTryReturn(NID_TEXT, pList != null, null, E_OUT_OF_MEMORY, "[%s] Memory allocation failed", GetErrorMessage(E_OUT_OF_MEMORY)); for (int i = 0; i < AVAILABLE_ENCODING_COUNT; i++) { - String* pEncodingStr = new (std::nothrow) String(availableEncodings[i]); + std::unique_ptr< String > pEncodingStr(new (std::nothrow) String(availableEncodings[i])); SysTryReturn(NID_TEXT, pEncodingStr, null, E_OUT_OF_MEMORY, "[%s] Memory allocation failed", GetErrorMessage(E_OUT_OF_MEMORY)); - r = pList->Add(*pEncodingStr); - if(IsFailed(r)) - { - delete pEncodingStr; - SysTryReturn(NID_TEXT, !IsFailed(r), null, r, "[%s] Unable to add encoding to list", GetErrorMessage(r)); - } + r = pList->Add(*(pEncodingStr.get())); + SysTryReturn(NID_TEXT, !IsFailed(r), null, r, "[%s] Unable to add encoding to list", GetErrorMessage(r)); + pEncodingStr.release(); } return pList.release(); diff --git a/src/text/FText_GsmEncodingCore.cpp b/src/text/FText_GsmEncodingCore.cpp index c32be47..9895049 100644 --- a/src/text/FText_GsmEncodingCore.cpp +++ b/src/text/FText_GsmEncodingCore.cpp @@ -79,35 +79,12 @@ _GsmEncodingCore::~_GsmEncodingCore(void) _EncodingCore* _GsmEncodingCore::GetEncodingCoreImplN(const Tizen::Base::String& encodingFrom, const Tizen::Base::String& encodingTo) { - if (encodingFrom != L"GSM") - { - SetLastResult(E_UNSUPPORTED_TYPE); - return null; - } - + SysTryReturn(NID_TEXT, encodingFrom == L"GSM", null, E_UNSUPPORTED_TYPE, "[E_UNSUPPORTED_TYPE] It is the unsupported type."); _GsmEncodingCore* pEncoderDecoder = new (std::nothrow) _GsmEncodingCore; SysTryReturn(NID_TEXT, pEncoderDecoder, null, E_OUT_OF_MEMORY, "[%s] Memory allocation failed", GetErrorMessage(E_OUT_OF_MEMORY)); - return pEncoderDecoder; } -result -_GsmEncodingCore::GetAvailableEncodingsN(Tizen::Base::Collection::IList* pEncodingList) -{ - SysTryReturnResult(NID_TEXT, pEncodingList, E_INVALID_ARG, - "[%s] Invalid argument is used. Input encoding list is null", GetErrorMessage(E_INVALID_ARG)); - - String* pEncodingStr = new (std::nothrow) String(L"GSM"); - SysTryReturnResult(NID_TEXT, pEncodingStr, E_OUT_OF_MEMORY, "[%s] Memory allocation failed", GetErrorMessage(E_OUT_OF_MEMORY)); - - result r = pEncodingList->Add(*pEncodingStr); - if (IsFailed(r)) - { - delete pEncodingStr; - return r; - } - return E_SUCCESS; -} String _GsmEncodingCore::GetName(void) diff --git a/src/text/FText_GsmEncodingCore.h b/src/text/FText_GsmEncodingCore.h index 32d8f17..66b2e04 100644 --- a/src/text/FText_GsmEncodingCore.h +++ b/src/text/FText_GsmEncodingCore.h @@ -37,7 +37,6 @@ public: ~_GsmEncodingCore(void); static _EncodingCore* GetEncodingCoreImplN(const Tizen::Base::String& encodingFrom, const Tizen::Base::String& encodingTo); - virtual result GetAvailableEncodingsN(Tizen::Base::Collection::IList* pEncodingList); virtual result GetByteCount(const wchar_t* pSrc, int srcLength, int& retLength); virtual result GetCharCount(const byte* pSrc, int srcLength, int& retLength); diff --git a/src/text/FText_IcuEncodingCore.cpp b/src/text/FText_IcuEncodingCore.cpp index 728fdd7..c0cefb8 100644 --- a/src/text/FText_IcuEncodingCore.cpp +++ b/src/text/FText_IcuEncodingCore.cpp @@ -359,44 +359,6 @@ _IcuEncodingCore::GetMaxCharCount(int byteCount) const return byteCount / (ucnv_getMinCharSize(__pEncoder)); } -result -_IcuEncodingCore::GetAvailableEncodingsN(IList* pEncodingList) -{ - SysTryReturnResult(NID_TEXT, pEncodingList, E_INVALID_ARG, "[%s] Invalid argument is used.Input encoding list is null", GetErrorMessage(E_INVALID_ARG)); - - result r = E_SUCCESS; - int count = ucnv_countAvailable(); - SysTryReturnResult(NID_TEXT, count > 0, E_SYSTEM, "[%s] Unable to get available encoding list count.", GetErrorMessage(E_SYSTEM)); - - String* pEncodingStr = null; - for (int i = 0; i < count; i++) - { - pEncodingStr = new (std::nothrow) String(ucnv_getAvailableName(i)); - SysTryReturnResult(NID_TEXT, pEncodingStr, E_OUT_OF_MEMORY, "[%s] Memory allocationfailed", GetErrorMessage(E_OUT_OF_MEMORY)); - - r = pEncodingList->Add(*pEncodingStr); - if (IsFailed(r)) - { - delete pEncodingStr; - return r; - } - } - - for (int i = 0; i < EXTRA_ENCODINGS_LENGTH; i++) - { - pEncodingStr = new (std::nothrow) String(extraEncodings[i]); - SysTryReturnResult(NID_TEXT, pEncodingStr, E_OUT_OF_MEMORY, "[%s] Memory allocationfailed", GetErrorMessage(E_OUT_OF_MEMORY)); - - r = pEncodingList->Add(*pEncodingStr); - if (IsFailed(r)) - { - delete pEncodingStr; - return r; - } - } - - return E_SUCCESS; -} result _IcuEncodingCore::GetResultFromIcuErrorCode(UErrorCode& err) diff --git a/src/text/FText_IcuEncodingCore.h b/src/text/FText_IcuEncodingCore.h index b6f3347..4b425dc 100644 --- a/src/text/FText_IcuEncodingCore.h +++ b/src/text/FText_IcuEncodingCore.h @@ -41,7 +41,6 @@ public: virtual ~_IcuEncodingCore(void); static _EncodingCore* GetEncodingCoreImplN(const Tizen::Base::String& encodingFrom, const Tizen::Base::String& encodingTo); - result GetAvailableEncodingsN(Tizen::Base::Collection::IList* pEncodingList); virtual result GetByteCount(const wchar_t* pSrc, int srcLength, int& retLength); virtual result GetCharCount(const byte* pSrc, int srcLength, int& retLength); diff --git a/src/text/FText_Iso885916EncodingCore.cpp b/src/text/FText_Iso885916EncodingCore.cpp index 5d5329c..cc7490d 100644 --- a/src/text/FText_Iso885916EncodingCore.cpp +++ b/src/text/FText_Iso885916EncodingCore.cpp @@ -59,35 +59,12 @@ _Iso885916EncodingCore::~_Iso885916EncodingCore(void) _EncodingCore* _Iso885916EncodingCore::GetEncodingCoreImplN(const Tizen::Base::String& encodingFrom, const Tizen::Base::String& encodingTo) { - if (encodingFrom != L"ISO-8859-16") - { - SetLastResult(E_UNSUPPORTED_TYPE); - return null; - } - + SysTryReturn(NID_TEXT, encodingFrom == L"ISO-8859-16", null, E_UNSUPPORTED_TYPE, "[E_UNSUPPORTED_TYPE] It is the unsupported type."); _Iso885916EncodingCore* pEncodingCore = new (std::nothrow) _Iso885916EncodingCore; SysTryReturn(NID_TEXT, pEncodingCore, null, E_OUT_OF_MEMORY, "[%s] Memory allocation failed", GetErrorMessage(E_OUT_OF_MEMORY)); - return pEncodingCore; } -result -_Iso885916EncodingCore::GetAvailableEncodingsN(Tizen::Base::Collection::IList* pEncodingList) -{ - SysTryReturnResult(NID_TEXT, pEncodingList, E_INVALID_ARG, - "[%s] Invalid argument is used. Input encoding list is null", GetErrorMessage(E_INVALID_ARG)); - - String* pEncodingStr = new (std::nothrow) String(L"ISO-8859-16"); - SysTryReturnResult(NID_TEXT, pEncodingStr, E_OUT_OF_MEMORY, "[%s] Memory allocation failed", GetErrorMessage(E_OUT_OF_MEMORY)); - - result r = pEncodingList->Add(*pEncodingStr); - if (IsFailed(r)) - { - delete pEncodingStr; - return r; - } - return E_SUCCESS; -} String _Iso885916EncodingCore::GetName(void) diff --git a/src/text/FText_Iso885916EncodingCore.h b/src/text/FText_Iso885916EncodingCore.h index 3fadf80..1fc0f64 100644 --- a/src/text/FText_Iso885916EncodingCore.h +++ b/src/text/FText_Iso885916EncodingCore.h @@ -37,7 +37,6 @@ public: ~_Iso885916EncodingCore(void); static _EncodingCore* GetEncodingCoreImplN(const Tizen::Base::String& encodingFrom, const Tizen::Base::String& encodingTo); - virtual result GetAvailableEncodingsN(Tizen::Base::Collection::IList* pEncodingList); virtual result GetByteCount(const wchar_t* pSrc, int srcLength, int& retLength); virtual result GetCharCount(const byte* pSrc, int srcLength, int& retLength); diff --git a/src/text/FText_Ucs2EncodingCore.cpp b/src/text/FText_Ucs2EncodingCore.cpp index a3edbd9..248e38a 100644 --- a/src/text/FText_Ucs2EncodingCore.cpp +++ b/src/text/FText_Ucs2EncodingCore.cpp @@ -56,12 +56,8 @@ _Ucs2EncodingCore::GetEncodingCoreImplN(const Tizen::Base::String& encodingFrom, encodingStr.Replace(L"-", ""); encodingStr.Replace("_", ""); - - if (!encodingStr.StartsWith(L"UCS2", 0)) - { - SetLastResult(E_UNSUPPORTED_TYPE); - return null; - } + + SysTryReturn(NID_TEXT, encodingStr.StartsWith(L"UCS2", 0), null, E_UNSUPPORTED_TYPE, "[E_UNSUPPORTED_TYPE] It is the unsupported type"); if ((encodingStr == "UCS2") || (encodingStr == "UCS2BE") || (encodingStr == "UCS2LE")) { @@ -91,29 +87,6 @@ _Ucs2EncodingCore::GetEncodingCoreImplN(const Tizen::Base::String& encodingFrom, return null; } -result -_Ucs2EncodingCore::GetAvailableEncodingsN(Tizen::Base::Collection::IList* pEncodingList) -{ - SysTryReturnResult(NID_TEXT, pEncodingList, E_INVALID_ARG, - "[%s] Invalid argument is used. Input encoding list is null", GetErrorMessage(E_INVALID_ARG)); - - result r = E_SUCCESS; - String* pEncodingStr = null; - for (int i = 0; i < SUPPORTED_ENCODINGS_LENGTH; i++) - { - pEncodingStr = new (std::nothrow) String(supportedEncodings[i]); - SysTryReturnResult(NID_TEXT, pEncodingStr, E_OUT_OF_MEMORY, "Unable to allocate memory for encoding string."); - - r = pEncodingList->Add(*pEncodingStr); - if (IsFailed(r)) - { - delete pEncodingStr; - return r; - } - } - - return r; -} String _Ucs2EncodingCore::GetName(void) diff --git a/src/text/FText_Ucs2EncodingCore.h b/src/text/FText_Ucs2EncodingCore.h index 08a1489..0a54902 100644 --- a/src/text/FText_Ucs2EncodingCore.h +++ b/src/text/FText_Ucs2EncodingCore.h @@ -51,7 +51,6 @@ public: ~_Ucs2EncodingCore(void); static _EncodingCore* GetEncodingCoreImplN(const Tizen::Base::String& encodingFrom, const Tizen::Base::String& encodingTo); - virtual result GetAvailableEncodingsN(Tizen::Base::Collection::IList* pEncodingList); virtual result GetByteCount(const wchar_t* pSrc, int srcLength, int& retLength); virtual result GetCharCount(const byte* pSrc, int srcLength, int& retLength); diff --git a/src/text/inc/FText_EncodingCore.h b/src/text/inc/FText_EncodingCore.h index 73a7a63..d81c489 100644 --- a/src/text/inc/FText_EncodingCore.h +++ b/src/text/inc/FText_EncodingCore.h @@ -39,10 +39,6 @@ public: static _EncodingCore* GetEncodingCoreN(const Tizen::Base::String& encodingFrom, const Tizen::Base::String& encodingTo); - static Tizen::Base::Collection::IList* GetAvailableEncodingsN(void); - - virtual result GetAvailableEncodingsN(Tizen::Base::Collection::IList* pEncodingList) = 0; - virtual result GetByteCount(const wchar_t* pSrc, int srcLength, int& retLength) = 0; virtual result GetCharCount(const byte* pSrc, int srcLength, int& retLength) = 0; -- 2.7.4