Fixed the memory leak
authorHokwon Song <hokwon.song@samsung.com>
Tue, 21 May 2013 02:01:12 +0000 (11:01 +0900)
committerHokwon Song <hokwon.song@samsung.com>
Tue, 21 May 2013 02:01:12 +0000 (11:01 +0900)
Change-Id: I497fc0ac95292ce41a74e2fe2d95bb1f0c35cd83
Signed-off-by: Hokwon Song <hokwon.song@samsung.com>
src/text/FText_EncodingCore.cpp
src/text/FText_EncodingImpl.cpp
src/text/FText_GsmEncodingCore.cpp
src/text/FText_GsmEncodingCore.h
src/text/FText_IcuEncodingCore.cpp
src/text/FText_IcuEncodingCore.h
src/text/FText_Iso885916EncodingCore.cpp
src/text/FText_Iso885916EncodingCore.h
src/text/FText_Ucs2EncodingCore.cpp
src/text/FText_Ucs2EncodingCore.h
src/text/inc/FText_EncodingCore.h

index 5e9d226..2e6261b 100644 (file)
@@ -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<LinkedList, AllElementsDeleter> 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)
index 8a4c95e..92471e2 100644 (file)
@@ -537,21 +537,18 @@ _EncodingImpl::GetAvailableEncodingsImplN(void)
        ClearLastResult();
        result r = E_SUCCESS;
 
-       std::unique_ptr<LinkedList, AllElementsDeleter> 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();
index c32be47..9895049 100644 (file)
@@ -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)
index 32d8f17..66b2e04 100644 (file)
@@ -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);
index 728fdd7..c0cefb8 100644 (file)
@@ -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)
index b6f3347..4b425dc 100644 (file)
@@ -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);
index 5d5329c..cc7490d 100644 (file)
@@ -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)
index 3fadf80..1fc0f64 100644 (file)
@@ -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);
index a3edbd9..248e38a 100644 (file)
@@ -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)
index 08a1489..0a54902 100644 (file)
@@ -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);
index 73a7a63..d81c489 100644 (file)
@@ -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;