apply json spec for parsing double
authorSeongjun Yim <se201.yim@samsung.com>
Thu, 18 Apr 2013 10:27:33 +0000 (19:27 +0900)
committerSeongjun Yim <se201.yim@samsung.com>
Thu, 18 Apr 2013 10:50:35 +0000 (19:50 +0900)
Change-Id: I83479453f2d5e3e4b4c75e218ab12582c344b115
Signed-off-by: Seongjun Yim <se201.yim@samsung.com>
src/FWebJson_JsonParserImpl.cpp

index e28ccea..d4aa059 100755 (executable)
@@ -35,6 +35,7 @@
 #include <FWebJsonJsonObject.h>
 #include <FWebJsonJsonParser.h>
 #include <FWebJsonJsonString.h>
+#include <FBase_StringConverter.h>
 #include "FWebJson_JsonParserImpl.h"
 #include "FWebJson_JsonUtils.h"
 
@@ -458,13 +459,11 @@ _JsonParserImpl::ParseNumberN(void)
 
        SysTryReturn(NID_WEB_JSON, created, null, E_INVALID_DATA, "[E_INVALID_DATA] Input data malformed [%c] at [%d]", __pJsonData[__parserPosition], __parserPosition);
 
-       double number = 0.0;
-       JsonNumber* pJsonNumber = null;
+       std::unique_ptr<char[]> pNumber(Tizen::Base::_StringConverter::CopyToCharArrayN(numString));
+       SysTryReturn(NID_WEB_JSON, pNumber.get(), null, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
+       double number = atof(pNumber.get());
 
-       result r = Double::Parse(numString, number);
-       SysTryReturn(NID_WEB_JSON, r == E_SUCCESS, null, r, "[%s] parse double from string failed", GetErrorMessage(r));
-
-       pJsonNumber = new (std::nothrow) JsonNumber(number);
+       JsonNumber* pJsonNumber = new (std::nothrow) JsonNumber(number);
        SysTryReturn(NID_WEB_JSON, pJsonNumber, null, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
 
        return pJsonNumber;