[N_SE-33612] when the number has '-'(sign), Decod() works wrong
authordahyeong.kim <dahyeong.kim@samsung.com>
Wed, 10 Apr 2013 12:25:53 +0000 (21:25 +0900)
committerdahyeong.kim <dahyeong.kim@samsung.com>
Wed, 10 Apr 2013 12:25:53 +0000 (21:25 +0900)
Change-Id: I6040ede618ef06e8bc699b4a66586f3377c40492
Signed-off-by: dahyeong.kim <dahyeong.kim@samsung.com>
src/base/FBaseInt8.cpp

index ecf9bd5..284df62 100644 (file)
@@ -104,20 +104,28 @@ Int8::Decode(const String& s, char& ret)
 
        long value = 0;
        int radix = 0;
+       int startIndex = 0;
+       int minLength = 2;
        wchar_t* pEnd = null;
        String str(s);
 
+       if (s[0] == L'-')
+       {
+               startIndex = 1;
+               minLength = 3;
+       }
+
        // Find radix
-       if (s[0] == L'#')
+       if (s[startIndex] == L'#')
        {
                radix = Character::RADIX_HEXADECIMAL;
 
                // Remove '#'
-               str.Remove(0, 1);
+               str.Remove(startIndex, 1);
        }
-       else if (s[0] == L'0' && (s.GetLength() >= 2))
+       else if (s[startIndex] == L'0' && (s.GetLength() >= minLength))
        {
-               if (s[1] == L'x' || s[1] == L'X')
+               if (s[startIndex + 1] == L'x' || s[startIndex + 1] == L'X')
                {
                        radix = Character::RADIX_HEXADECIMAL;
                }